如果要为派生类编写自定义序列化方法,
我是否必须再次读写基类字段?

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/

10-09 14:01