java中对象序列化(Serialization)的注意事项
2015-12-18 11:15
471 查看
1.序列化能保存的元素
序列化只能保存对象的非静态成员交量,不能保存任何的成员方法和静态的成员变量,而且序列化保存的只是变量的值,对于变量的任何修饰符都不能保存
2 .序列化对象的属性没有对序列化对象自身的直接或间接引用。
例如:下述类A和B互相引用,序列化A或B都会存在问题。
public class A implements Serializable {
private B b;
}
public class B implements Serializable {
private A a;
}
3. 使用transient关键字禁用不应该被序列化的属性。
例如,Thread对象或FileInputStream对象 ,必须用transient关键字标明,否则编译器将报措。对于第二点注意事项中的问题,可以通过添加transient关键字解决,即改为:
public class A implements Serializable {
privatetransient B
b;
}
public class B implements Serializable {
privatetransient A
a;
}
序列化只能保存对象的非静态成员交量,不能保存任何的成员方法和静态的成员变量,而且序列化保存的只是变量的值,对于变量的任何修饰符都不能保存
2 .序列化对象的属性没有对序列化对象自身的直接或间接引用。
例如:下述类A和B互相引用,序列化A或B都会存在问题。
public class A implements Serializable {
private B b;
}
public class B implements Serializable {
private A a;
}
3. 使用transient关键字禁用不应该被序列化的属性。
例如,Thread对象或FileInputStream对象 ,必须用transient关键字标明,否则编译器将报措。对于第二点注意事项中的问题,可以通过添加transient关键字解决,即改为:
public class A implements Serializable {
privatetransient B
b;
}
public class B implements Serializable {
privatetransient A
a;
}
相关文章推荐
- ubuntu java路径
- java的前期绑定和后期绑定使用示例
- java设计模式(九)--建造者模式
- java加密的几种方式
- Java 大作业回忆--day05-- 手机能不能做到和激光笔一样?
- 【Java EE 学习 74 下】【数据采集系统第六天】【使用Jfreechart的统计图实现】【将JFreechart整合到项目中】
- Java - 正则表达式的运用(Pattern模式和Matcher匹配)—— 匹配中文,英文字母和数字及_长度详解——收集资源blog
- Ubuntu 添加应用程序到Launcher
- java 中回调函数的理解
- java学习之 反射机制
- 对HashCode的理解
- Java开发中的23种设计模式详解(转)
- Eclipse 系统开发注释模板使用
- 阿录帮帮忙—spring mvc 的hello world
- 轉:JAVA多態
- 如何将jdk1.8降到jdk1.6
- SpringMvc(Base64解密)上传
- Java中堆内存和栈内存详解
- eclipse项目导入到Android Studio Plugin with id 'android-library' not found
- java方法重载 与 重写