Serialization(序列化)是一种将对象以一连串的字节描述的过程。Java序列化API提供一种处理对象序列化的标准机制。
通常采用 implements java.io.Serializable 的方式就可以了,这种方式简单,没有要实现的任何方法。
public class Entity implements java.io.Serializable
当进行序列化的时候:
首先JVM会先调用writeReplace方法,在这个阶段,我们可以进行张冠李戴,将需要进行序列化的对象换成我们指定的对象.
跟着JVM将调用writeObject方法,来将对象中的属性一个个进行序列化,我们可以在这个方法中控制住哪些属性需要序列化.
Externalizable 是一个有实际方法需要实现的interface,包括writeExternal和readExternal,是Serializable接口的子接口:
public class Entity implements java.io.Externalizable {
private Object writeReplace() throws ObjectStreamException {
System.out.println("writeReplace invoked");
return this;
}
private Object readResolve() throws ObjectStreamException {
System.out.println("readResolve invoked");
return this;
}
public Object serialize() throws IOException, ClassNotFoundException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
本文深入探讨了Java序列化API的原理和使用方法,包括如何通过implements java.io.Serializable接口进行基本序列化,以及使用Externalizable接口进行更高级的序列化控制。详细介绍了序列化过程中的关键方法writeReplace和writeObject的作用,以及如何通过覆盖这些方法实现自定义的序列化逻辑。
3787

被折叠的 条评论
为什么被折叠?



