java基于java.io.Serializable接口的序列化方式学习
写在前面
本文看下Java自带的序列化机制。
1:正戏
定义要序列化的类:
package javaserialize;import java.io.Serializable;public class BlackCat implements Serializable {private static final long serialVersionUID = 1L;private String name;public BlackCat() {super();System.out.println("调用黑猫的无参构造");}public BlackCat(String color, String name) {this.name = name;System.out.println("调用黑猫有 color 参数的构造");}@Overridepublic String toString() {return "BlackCat{" +"name='" + name + '\'' +super.toString() +'\'' +'}';}
}
测试类:
package javaserialize;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;public class SuperMain {private static final String FILE_PATH = "./super.bin";public static void main(String[] args) throws Exception {serializeAnimal();deserializeAnimal();}private static void serializeAnimal() throws Exception {BlackCat black = new BlackCat("black", "我是黑猫");System.out.println("序列化前:"+black.toString());System.out.println("=================开始序列化================");ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH));oos.writeObject(black);oos.flush();oos.close();}private static void deserializeAnimal() throws Exception {System.out.println("=================开始反序列化================");ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_PATH));BlackCat black = (BlackCat) ois.readObject();ois.close();System.out.println(black);}
}
运行:
调用黑猫有 color 参数的构造
序列化前:BlackCat{name='我是黑猫'javaserialize.BlackCat@135fbaa4'}
=================开始序列化================
=================开始反序列化================
BlackCat{name='我是黑猫'javaserialize.BlackCat@6acbcfc0'}Process finished with exit code 0
写在后面
参考文章列表
java序列化与反序列化全讲解 。