在存储的时候,把字节转换成对象教序列化的使用。如果想把字节换回来,就要运用到反序列化的概念。IO流中的序列化用于处理字节序列的问题,需要我们先对IO流序列化的概念、图解、使用场景进行了解,在了解基本概念后,我们进一步学习IO流序列化的构造方法。
1.概念
Java 提供了一种对象序列化的机制,用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中 持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行 反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。
2.图解
3.使用场景
(1)所有需要网络传输的对象都需要实现序列化接口,通过建议所有的javaBean都实现Serializable接口。
(2)对象的类名、实例变量(包括基本类型,数组,对其他对象的引用)都会被序列化;方法、类变量、transient实例变量都不会被序列化。
(3)如果想让某个变量不被序列化,使用transient修饰。序列化对象的引用类型成员变量,也必须是可序列化的,否则,会报错。
(4)反序列化时必须有序列化对象的class文件。
(5)当通过文件、网络来读取序列化后的对象时,必须按照实际写入的顺序读取。
(6)单例类序列化,需要重写readResolve()方法;否则会破坏单例原则。
(7)同一对象序列化多次,只有第一次序列化为二进制流,以后都只是保存序列化编号,不会重复序列化。
(8)建议所有可序列化的类加上serialVersionUID 版本号,方便项目升级。
4.构造方法
publicObjectOutputStream(OutputStreamout):创建一个指定OutputStream的ObjectOutputStream。 FileOutputStreamfileOut=newFileOutputStream("employee.txt"); ObjectOutputStreamout=newObjectOutputStream(fileOut);
原文来自:https://www.py.cn
暂无评论内容