如果要为派生类编写自定义序列化方法,
我是否必须再次读写基类字段?
A implements Serializable
{
field1,
field2 etc
private void readObject(ObjectInputStream inputStream) throws ClassNotFoundException, IOException
{
// read in field1
//read in field2
}
private void writeObject(ObjectOutputStream outputStream) throws IOException
{
// write field1 to output stream
//write field 2 to output stream
}
}
Class B extends A
{
field 3
private void writeObject(ObjectOutputStream outputStream) throws IOException
{
//TODO : should contain only field 3 or field1,field2 and field 3?
}
}
最佳答案
如果要在类型B的对象上调用writeObject
,则它不会隐式调用类A中的writeObject
方法。您必须使用super.writeObject(outStream)
自己调用它,否则可以在子级中设置所有这三个字段方法本身。简而言之,在您的情况下,B中的writeObject函数应包含所有三个字段。
关于java - 自定义继承类的序列化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25275984/