序列化:
ObjectOutputStream --> writeObject()
反序列化:
ObjectInputStream --> readObject()
java序列化,反序列化代码
Person.class
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
public class Person implements Serializable {
//implements:实现了一个Serializable接口
//Person接口如果想要序列号或反序列化就要继承可以序列化反序列化的类,如Serializable
public int age;
public String name;
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {//private私有的,无法被继承
//ObjectInputStream:一个类型名,是所有类型的父类
Runtime.getRuntime().exec("calc");
// 默认的反序列化操作
in.defaultReadObject();
}
}
dyl.class
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Person p=new Person();
p.age=18;
p.name="dyl";
serialize(p,"dyl.bin");
System.out.println("反序列化结果:" + deserialize("dyl.bin"));
}
public static void serialize(Object obj, String filePath) throws IOException {
try (FileOutputStream fileOut = new FileOutputStream(filePath);
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut)) {
objectOut.writeObject(obj);
}
}
public static Object deserialize(String filePath) throws IOException, ClassNotFoundException {
try (FileInputStream fileIn = new FileInputStream(filePath);
ObjectInputStream objectIn = new ObjectInputStream(fileIn)) {
return objectIn.readObject();
}
}
}
java序列化效果
执行Dyl.class,调出计算机,并生成一个dyl.bin文件
dyl.bin文件内容(java序列号的结果):
�� •sr •Person"qC���•�• •I •ageL •namet •Ljava/lang/String;xp •t •dyl