关于关键字transient的一二

简介: 关于关键字transient的一二

被transient关键字修饰的属性,在序列化对象的时候,不会序列化这个属性。

引入就是说,一个对象,某个有值得属性如果被transient修饰,那么这个对象在经过序列化和反序列化以后,该属性之前的值会消失掉,变成属性类型的默认值。


因为安全,一些对象属性不想被序列化到硬件中,就可以用transient修饰,使得该属性的生命周期仅仅存在内存中。


java的序列化有两种方式:

第一重就是实现Serializable接口,第二种就是实现Exteranlizable接口,需要重写writeExternal和readExternal方法,它的效率比Serializable高一些,并且可以决定哪些属性需要序列化(即使是transient修饰的),但是对大量对象,或者重复对象,则效率低。


如果是通过实现Exteranlizable接口来做序列话的时候,那么transient关键字就会失效,一个属性就算是被transient修饰那么在序列化和反序列化的时候也会被参入其中。


那么静态变量呢?被transient修饰的话,是否会参与序列化?

答案是不会,因为静态变量存放的位置是在方法区中,而序列化是序列化到硬盘上的,在取这个属性的时候,是从方发区去取的,而不是通过硬盘数据反序列化来获得,所以被transient修饰的静态变量不会参与序列化与反序列化。

目录
相关文章
人工智能 缓存 前端开发
9338 44
人工智能 JavaScript 开发工具
3865 10
开发工具 Swift git
1482 2
缓存 JavaScript Shell
1775 3
人工智能 JavaScript 测试技术
1360 0
人工智能 Java BI
858 0
人工智能 JavaScript 测试技术
595 4
Shell API 调度
964 3

热门文章

最新文章