1.读写顺序要一致,
//序列化和反序列化的顺序需要一致
objectOutputStream.writeInt(100);
objectOutputStream.writeBoolean(true);
objectOutputStream.writeChar('q');
objectOutputStream.writeUTF("我爱java");
System.out.println(objectInputStream.readInt());
System.out.println( objectInputStream.readBoolean());
System.out.println(objectInputStream.readChar());
System.out.println(objectInputStream.readUTF());
2.要求序列化或者发序列化对象实现Serializable接口
objectOutputStream.writeObject(dog);
class dog implements Serializable{
private String name;
private int a;
public dog(String name, int a) {
this.name = name;
this.a = a;
}
}
3.建议添加一个servialVersionUID,提高版本兼容性,当我们对类属性进行操作时,不会认为产生了新的类。
4.序列化时默认将所有属性都进行序列化,除了static 和 transient 修饰的成员。
5.序列化对象时要求里面属性的类型也必须实现Serializable接口。
dog dog = new dog("pp",3);
objectOutputStream.writeObject(dog);
//这种情况就会报错,因为M这个类没有实现Servialable接口
class M{}
class dog implements Serializable{
private String name;
private int a;
private M m;
public dog(String name, int a) {
this.name = name;
this.a = a;
}
}
6.序列化具备可继承性,如果A类实现了Servialable接口,a继承了A,那么a也具备序列化和反序列化。