原博文http://www.cnblogs.com/lanxuezaipiao/p/3369962.htmlhtml
一个对象只要实现了Serilizable接口,这个对象就能够被序列化,java的这种序列化模式为开发者提供了不少便利,咱们能够没必要关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的全部属性和方法都会自动序列化。java
总之,java 的transient关键字为咱们提供了便利,你只须要实现Serilizable接口,将不须要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。spa
transient使用小结orm
1)一旦变量被transient修饰,变量将再也不是对象持久化的一部分,该变量内容在序列化后没法得到访问。htm
2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量若是是用户自定义类变量,则该类须要实现Serializable接口。对象
3)被transient关键字修饰的变量再也不能被序列化,一个静态变量无论是否被transient修饰,均不能被序列化。blog
第三点确实没错(一个静态变量无论是否被transient修饰,均不能被序列化),反序列化后类中static型变量username的值为当前JVM中对应static变量的值,这个值是JVM中的不是反序列化得出的接口
transient使用细节——被transient关键字修饰的变量真的不能被序列化吗ip
Java中,对象的序列化能够经过实现两种接口来实现,若实现的是Serializable接口,则全部的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西能够自动序列化,须要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关。所以第二个例子输出的是变量content初始化的内容,而不是null。开发