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/

相关推荐
曹牧2 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
ouliten2 小时前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
爬山算法2 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7253 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎3 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄3 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿3 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds3 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹3 小时前
【Java基础】多态 | 打卡day2
java·开发语言