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;
}
相关推荐
Scott9999HH4 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔4 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社5 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海5 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖6 小时前
JDK 26 新特性详解
java·开发语言
马优晨6 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区8 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大9 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai9 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说9 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json