1.如果要序列化的对象是普通类,需要此类实现Serializable
public class NumB implements Serializable {
private static NumB instance=new NumB();
private NumB(){}
public static NumB getInstance(){
return instance;
}
}
但是如果是enum枚举类的话,则不需要
public enum NumA {
SAMPLE;
}
2.普通类通过序列化对象,并反序列化得到的对象并不是原来的对象,但枚举类经过序列化后还是原先的对象。
public class SeriaTest {
public static void main(String[] args) {
NumA numA = NumA.SAMPLE;
NumB numB = NumB.getInstance();
try( ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("./resources/seria.txt"));
ObjectOutputStream outputStream1 = new ObjectOutputStream(new FileOutputStream("./resources/serib.txt"));
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("./resources/seria.txt"));
ObjectInputStream inputStream1 = new ObjectInputStream(new FileInputStream("./resources/serib.txt"))){
outputStream.writeObject(numB);
outputStream1.writeObject(numA);
Object o = inputStream.readObject();
Object o1 = inputStream1.readObject();
//普通类 结果为false
System.out.println(numB==o);
//枚举类 结果为true
System.out.println(numA==o1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}