最近在学习java一些底层的知识,顺便通过博客的形式做一些小笔记,方便以后的知识梳理。
1. transient的作用
2. transient的使用注意点
3. transient的不可序列化的反例
1. transient的作用
在java中对象只要实现了Serilizable接口,这个对象就可以被序列化,序列化模式为开发者提供了很多便利,通过实现这个接口我们无需关心序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。
2. transient的使用注意点
(1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问,即不能进行反序列化。
(2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。
3. transient的不可序列化的反例
对象的序列化可以通过实现两种接口来实现,分别是Serializable接口和Externalizable接口,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关。
4.@Transient注解
在实现Serializable接口的前提下,在变量加入@Transient注解一样可以取消序列化。
在
目前比较流行的ORM框架上,在实体类的某个字段加入
@Transient注解则表示该字段不进行持久化即不成为数据库字段,如年龄加入@Transient注解不做为数据库字段,根据其生日与当前日期进行计算得
出。