考虑一个这样的情况:我在我的Java类中有10个字段。我想做一些特殊处理,比如处理其中的几个字段(比如说3个),而其他字段则通过默认的ObjectOutputStream实现进行序列化。有什么方法可以实现这个目的吗?
我可以在我的类中提供writeObject(ObjectOutputStream os)的实现来专门处理这3个字段,但是如何对其余的字段进行默认处理呢?
谢谢。
writeObject(ObjectOutputStream out)
方法,并在此方法中:ObjectOutputStream.defaultWriteObject()
以默认方式写入所有其他字段并添加类似的实现来读取对象。
public class MyClass implements Serializable
{
private void writeObject(java.io.ObjectOutputStream out) throws IOException
{
out.defaultWriteObject();
// add code to write the special fields
}
private void readObject(java.io.ObjectInputStream in) throws IOException
{
in.defaultReadObject();
// add code to read the special fields
}
private transient int special1;
...
}
transient
是否有任何原因?如果我理解正确,transient
在JAVA中的意思是“不应该被序列化”。 - TT.ObjectOutputStream.defaultWriteObject()
和 ObjectInputStream.defaultReadObject()
忽略。 - wero
Object readResolve() throws ObjectStreamException
方法,并在其中设置默认值。请参考规范,了解如何与“ObjectInputStream”精确地协同工作的详细信息。 - Eric Galluzzo