首页 > 代码库 > Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口
Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口
方法一:
实现Serializable接口,这个我就不多说了
方法二:
实现Externalizable接口:
例子:
package demo;import java.io.Externalizable;import java.io.IOException;import java.io.ObjectInput;import java.io.ObjectOutput;public class XXS implements Externalizable{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(this); } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { in.readObject(); }}
测试:
import java.io.FileOutputStream;import java.io.ObjectOutputStream;public class Demo11 { public static void main(String[] args) throws Exception { XXS xxs=new XXS(); xxs.setName("你好"); xxs.setAge(10); ObjectOutputStream dos=new ObjectOutputStream(new FileOutputStream("xx.txt")); dos.writeObject(xxs); dos.close(); }}
一些api:
Externalizable 实例类的唯一特性是可以被写入序列化流中,该类负责保存和恢复实例内容。 若某个要完全控制某一对象及其超类型的流格式和内容,则它要实现 Externalizable 接口的 writeExternal 和 readExternal 方法。这些方法必须显式与超类型进行协调以保存其状态。这些方法将代替定制的 writeObject 和 readObject 方法实现。
writeExternal(ObjectOutput out)
该对象可实现 writeExternal 方法来保存其内容,它可以通过调用 DataOutput 的方法来保存其基本值,或调用 ObjectOutput 的 writeObject 方法来保存对象、字符串和数组。
readExternal(ObjectInput in)
对象实现 readExternal 方法来恢复其内容,它通过调用 DataInput 的方法来恢复其基础类型,调用 readObject 来恢复对象、字符串和数组。
ObjectInput:
ObjectInput 扩展 DataInput 接口以包含对象的读操作。DataInput 包括基本类型的输入方法;ObjectInput 扩展了该接口,以包含对象、数组和 String 的输出方法。
Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口