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/

相关推荐
程序员良辰18 分钟前
Spring与SpringBoot:从手动挡到自动挡的Java开发进化论
java·spring boot·spring
鹦鹉00721 分钟前
SpringAOP实现
java·服务器·前端·spring
练习时长两年半的程序员小胡1 小时前
JVM 性能调优实战:让系统性能 “飞” 起来的核心策略
java·jvm·性能调优·jvm调优
崎岖Qiu1 小时前
【JVM篇11】:分代回收与GC回收范围的分类详解
java·jvm·后端·面试
墨染枫3 小时前
pytorch学习笔记-自定义卷积
pytorch·笔记·学习
27669582923 小时前
东方航空 m端 wasm req res分析
java·python·node·wasm·东方航空·东航·东方航空m端
许苑向上3 小时前
Spring Boot 自动装配底层源码实现详解
java·spring boot·后端
喵叔哟4 小时前
31.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--收支分类
java·微服务·.net
codu4u13144 小时前
Maven中的bom和父依赖
java·linux·maven
呦呦鹿鸣Rzh4 小时前
微服务快速入门
java·微服务·架构