内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
什么是“对象序列化”?你能用一些例子解释一下吗?
序列化是在存储介质(例如文件或内存缓冲区)中保存对象的过程,或者通过二进制形式将其传输到网络连接上。序列化的对象是JVM独立的,可以由任何JVM重新序列化。在这种情况下,“在内存中”的java对象状态被转换为一个字节流。这个类型的文件不能被用户理解。它是一种特殊类型的对象,即由JVM (Java虚拟机)重用。这个序列化对象的过程也称为压缩或编组对象。
要序列化的对象必须实现java.io.Serializable
接口。对象的默认序列化机制写入对象的类、类签名以及所有非transient 和非静态字段的值。
class ObjectOutputStream extends java.io.OutputStream implements ObjectOutput,
ObjectOutput
接口扩展了DataOutput
接口,并向文件中添加用于序列化对象和写入字节的方法。大ObjectOutputStream
扩展java.io.OutputStream
和实施ObjectOutput
接口。它将对象、数组和其他值序列化为流。的构造函数ObjectOutputStream
写成:
ObjectOutput ObjOut = new ObjectOutputStream(new FileOutputStream(f));
上面的代码已用于创建ObjectOutput
类的ObjectOutputStream( )
构造函数,该构造函数接受FileOuputStream
作为参数。
ObjectOutput
接口通过实现ObjectOutputStream ObjectOutputStream
构造为序列化对象。
在java中反序列化对象
序列化的相反操作称为反序列化,即从一系列字节中提取数据称为反序列化,也称为充气或解组。
ObjectInputStream
扩展java.io.InputStream
和实施ObjectInput
接口。它从输入流反序列化对象、数组和其他值。的构造函数ObjectInputStream
写成:
ObjectInputStream obj = new ObjectInputStream(new FileInputStream(f));
上面的程序代码创建ObjectInputStream
类来反序列化已由ObjectInputStream实现
。上面的代码使用FileInputStream
class which holds the specified file object which has to be deserialized because the ObjectInputStream()
构造函数需要输入流。