Java序列化问题

Ric*_*dor 4 java serialization

当我序列化抽象类时,继承子类也会序列化吗?这是否包括抽象类及其子类的成员?

public abstract class RootClass implements Serializable{
 Object data;
}

public class SubClassA extends RootClass{
 Object dataA;
}

public class SubClassB extends RootClass{
 Object dataB;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我实例化SubClassA和SubClassB类时,我会将这些实例序列化,这是可能的吗?

它会包含子类和根类的成员吗?

Thi*_*ilo 8

不确定我是否理解这个问题.无论如何我会试着回答.

当你声明一个抽象类Serializable时,这个接口也被子类继承,所以它们被认为是Serializable,并且也必须是可序列化的(如果你什么也不做,将会应用默认的序列化机制,可能会也可能不会工作).

您只序列化对象实例,而不是类.

默认序列化也会序列化父类的字段,但前提是该父类也是Serializable.如果不是,则不会序列化父状态.

如果序列化抽象类的子类的对象,并且抽象类是Serializable,那么该抽象父类中的所有字段也将被序列化(通常的例外适用,例如瞬态或静态字段).