序列化的作用 是把java对象转化为二进制的字节流。从而便于java对象的存储和在网络上进行点到点间的传递。。。。
常用于分布式系统中。。。
编码模式化,主要变更在于不同情景下对输入输出流的选择。
- 对象实现Serializable接口。
- 序列化: ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream("user.s")); out.writeObject(new User()); out.close();
- 反序列化:
ObjectInputStream oin = new ObjectInputStream(new FileInputStream( "user.s")); User user = (User) oin.readObject(); oin.close();
注意事项:
- serialVersionUID 变量 是用来唯一标识序列化对象的。(比较时注意)
- 序列化的受体是 对象;而非 类。所以 static变量不会被序列化。
对声明为 Transient 的变量 不做序列化。
子类可序列化,父类不可序列化情况下,由父类中继承来的变量 不做序列化。
- 将序列化的对象中如果含有 未实现Serializable接口的对象 ,序列化时会 出错。
- 序列化多个对象的时候,注意文件不要重名。
- 对传输或存储过程中需要特殊处理的 可以 通过重写 writeObject 、readObject来实现。。。
- 安全隐患:对于序列化后的对象不再具有安全保护域 如 private变量。。。
- 包含线程的对象 不可序列化。。。。