transient 关键字

本文深入探讨了Java序列化的实现方式,介绍了通过实现Serializable接口自动序列化的便利性,以及使用transient关键字排除特定变量的方法。同时,对比了实现Externalizable接口的手动序列化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4974ce1e90ff854a086816f95cdef01633d.jpg

一个对象只要实现了Serilizable接口,这个对象就可以被序列化

  • java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程
  • 只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化
  • 将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中

transient使用小结、

  • 一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问
  • transient关键字只能修饰变量,而不能修饰方法和类
    • 注意,本地变量是不能被transient关键字修饰的
    • 变量如果是用户自定义类变量,则该类需要实现Serializable接口
  • 被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化

对象的序列化可以通过实现两种接口来实现

f989cd106bd83d1f60ed165b9067529829b.jpg

  • 若实现的是Serializable接口,则所有的序列化将会自动进行
  • 若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关

转载于:https://my.oschina.net/u/3847203/blog/2251189

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值