内容来自《Offer来了》
在Java生态中有很多优秀的序列化框架,比如arvo、protobuf、thrift、fastjson。我们也可以基于JDK原生的ObjectOutputStream和ObjectInputStream类实现对象进行序列化及反序列化,并调用其writeObject和readObject方法实现自定义序列化策略。具体的实现代码如下:
public static void main(String[] args) throws Exception {
//序列化数据到磁盘
FileOutputStream fos = new FileOutputStream("worker.out");
ObjectOutputStream oos = new ObjectOutputStream(fos);
Wroker testObject = new Wroker();
testObject.setName("alex");
oos.writeObject(testObject);
oos.flush();
oos.close();
//反序列化磁盘数据并解析数据状态
FileInputStream fis = new FileInputStream("worker.out");
ObjectInputStream ois = new ObjectInputStream(fis);
Wroker deTest = (Wroker) ois.readObject();
System.out.println(deTest.getName());
}
以上代码通过文件流的方式将wroker对象的状态写入磁盘中,在需要使用的时候再以文件流的方式将其读取并反序列化成我们需要的对象及其状态数据。