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();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)