关于关键字transient的一二

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

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

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


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


java的序列化有两种方式:

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


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


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

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

目录
相关文章
|
2月前
|
存储 安全 编译器
【C++ 关键字 类型限定符 】揭秘C++编程中的神秘元素:深入了解volatile关键字的强大作用
【C++ 关键字 类型限定符 】揭秘C++编程中的神秘元素:深入了解volatile关键字的强大作用
23 0
|
3月前
|
存储 编译器 C#
C#关键字常见面试题
C#关键字常见面试题
|
8月前
|
存储 编译器 C#
C#关键字相关面试题
C#关键字相关面试题
|
9月前
|
安全 Java 编译器
Volatile关键字的作用和实现原理
Volatile关键字的作用和实现原理
128 0
|
11月前
|
Java
关于关键字volatile的一二
关于关键字volatile的一二
49 0
|
11月前
|
存储 Java 数据安全/隐私保护
被遗忘的Java关键字:transient!
在 Java 中,transient 是一个关键字,用于指定一个类的字段在序列化时应该被忽略。transient 关键字只是暂时地在序列化过程中忽略了该字段,而不是永久性地从对象中删除该字段。
|
编译器
C零散知识点汇总之volatile关键字
C零散知识点汇总之volatile关键字
|
C++
怎么理解 C++ 的 explicit 关键字?
给构造函数声明 explicit 可以阻止它们被用来执行隐式类型转换(implicit type conversions)。本文通过一个例子来直观地帮助大家理解 C++ 中的 explicit 关键字。
91 0
|
存储 缓存 Java
Java并发编程之Volatile关键字解析
在java的并发编程中我们经常会使用到Volatile关键字。而关于Volatile关键字的使用以及Volatile关键字的特性和实现原理也是在笔面试中经常会遇到的问题了。
81 0
Java并发编程之Volatile关键字解析