Java 笔记 transient 用法

transient 关键字用于标记 不希望被序列化(Serialization) 的字段。序列化是指将对象的状态保存到字节流中,以便将其传输或存储。当使用如 ObjectOutputStream 进行序列化时,transient 修饰的字段将 不会被序列化

✅ 1. 使用场景

🔸 避免序列化敏感信息

java 复制代码
private transient String password;

🔸 某些字段不需要持久化(如缓存、临时数据)

java 复制代码
private transient List<CacheData> cache;

🔸 非序列化类型字段(非 Serializable 类型)

如果某字段不是 Serializable,又不想整个类报错,可以把这个字段设为 transient

java 复制代码
private transient SomeNonSerializableType helper;

✅ 2. 注意事项

  • transient 只能用于字段(不能修饰类或方法)。

  • 静态字段也不会被序列化,但它们 不能transient 修饰。

  • 如果你用 transient 修饰 final 字段,在反序列化时会报错或不符合预期(因为 final 字段需要构造函数赋值)。

✅ 3. 对比 statictransient

修饰符 是否序列化 说明
普通字段 被完整序列化
static 属于类,不属于对象
transient 明确表示不需要序列化
static transient 多余,static 本身就不会序列化

写小说也写代码,左手架空世界,右手现实逻辑。

📚 欢迎来看博客,起点同笔名在写小说,欢迎来找我玩。

https://my.qidian.com/author/433910170/

相关推荐
Larry_Yanan24 分钟前
QML学习笔记(二十四)QML的Keys附加属性
c++·笔记·qt·学习·ui
豆沙沙包?30 分钟前
2025年--Lc165--H637.二叉树的层平均值(二叉树的层序遍历)--Java版
java·开发语言
nnerddboy34 分钟前
FPGA自学笔记(正点原子ZYNQ7020):1.Vivado软件安装与点灯
笔记·fpga开发
Chunyyyen41 分钟前
【第十六周】自然语言处理的学习笔记01
笔记·学习·自然语言处理
我命由我123451 小时前
Photoshop - Photoshop 工具栏(5)多边套索工具
笔记·学习·ui·职场和发展·photoshop·ps·美工
迎風吹頭髮1 小时前
UNIX下C语言编程与实践40-UNIX 全局跳转:setjmp 与 longjmp 函数的使用与注意事项
java·c语言·unix
春风霓裳1 小时前
maven-setting配置
java·maven
小蒜学长1 小时前
springboot二手儿童绘本交易系统设计与实现(代码+数据库+LW)
java·开发语言·spring boot·后端
_dindong2 小时前
动规:回文串问题
笔记·学习·算法·leetcode·动态规划·力扣
Zwb2997922 小时前
Day 30 - 错误、异常与 JSON 数据 - Python学习笔记
笔记·python·学习·json