Java 要初始化瞬态场,最简单的解决方案是什么
当我还原这个类时,我想手动初始化Java 要初始化瞬态场,最简单的解决方案是什么,java,serialization,Java,Serialization,当我还原这个类时,我想手动初始化myTransient,否则我只想使用默认的序列化 如何将init()方法注入对象还原过程,而不重新编写整个序列化机制,就像Externalizable让我做的那样?实现readObject()方法: class MyClass implements Serializable { transient int myTransient; //Other variables } 从javadoc: 在序列化和反序列化过程中需要特殊处理的类必须使用以下精确签名实
myTransient
,否则我只想使用默认的序列化
如何将
init()
方法注入对象还原过程,而不重新编写整个序列化机制,就像Externalizable
让我做的那样?实现readObject()
方法:
class MyClass implements Serializable {
transient int myTransient;
//Other variables
}
从javadoc:
在序列化和反序列化过程中需要特殊处理的类必须使用以下精确签名实现特殊方法:
私有void readObject(java.io.ObjectInputStream-in)
抛出IOException,ClassNotFoundException
readObject方法负责从流中读取并恢复类字段。它可以调用in.defaultReadObject来调用用于恢复对象的非静态和非瞬态字段的默认机制。defaultReadObject方法使用流中的信息将保存在流中的对象的字段与当前对象中相应命名的字段一起分配。这将处理类进化为添加新字段的情况。该方法不需要关心属于其超类或子类的状态。通过使用writeObject方法或使用DataOutput支持的基本数据类型的方法将各个字段写入ObjectOutputStream来保存状态
另请参见:
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
myTransient = ...;
}