сериализация объектов java readObject/defaultReadObject
в чем разница между readObject
и defaultReadObject
на ObjectInputStream
класса? Кажется, я не могу найти много информации о разнице.
1 ответов
defaultReadObject()
запускает механизм десериализации по умолчанию, и используется при определении readObject()
метод Serializable
класса. Другими словами, при наличии пользовательской логики десериализации можно вернуться к сериализации по умолчанию, которая десериализует нестатические нестационарные поля. Например:
public class SomeClass implements Serializable {
private String fld1;
private int fld2;
private transient String fld3;
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
stream.defaultReadObject(); //fills fld1 and fld2;
fld3 = Configuration.getFooConfigValue();
}
]
С другой стороны, readObject()
используется при создании ObjectInputStream
, внешне из десериализованного объекта и хотите прочитать объект это было ранее сериализовано:
ObojectInputStream stream = new ObjectInputStream(aStreamWithASerializedObject);
Object foo = (Foo) stream.readObject();