transient 修饰符·学习笔记

"你好,阿米戈!我要告诉你有关序列化的更多细节。

假设我们的类包含对某个 InputStream 的引用。那么就无法对其进行序列化,对吗?

"是的。你亲口说过,流无法序列化。而且,无法序列化包含不可序列化数据的对象。"

"是的。就是这样。但是,如果类所存储的数据在其状态中未扮演重要角色,却阻止该类被视为可序列化的类,该怎么办?没关系,类可能会存储无用内容。它可以随时甚至永久抛弃此数据。"

对于这些情况,Java 创建者给出了 transient 关键字。如果将此关键字写在成员变量之前,则该变量在序列化期间将被忽略。其状态不会被保存或重构。就像它不存在一样。这正好针对我们刚才考虑的情况。

还记得缓存和 volatile 修饰符吗?任何规则都有例外。

下面就是这样一个示例:

"cat"示例包含将被序列化忽略的变量:

代码

复制代码
class Cat implements Serializable
{
 public String name;
 public int age;
 public int weight;

 transient public InputStream in = System.in;
}
相关推荐
2501_944521598 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理8 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu11410 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck11 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir11 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人11 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_9445215912 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
meiying883812 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界13 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper13 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash