2011-12-08 55 views
5

假设我有1个基类和一个派生类。 派生类具有基类不包含的额外字段。通过超类进行序列化/反序列化

然后,我实例化派生类并将其分配给基类的定义。 当我通过基类序列化和反序列化对象时会发生什么。

例如:

Class TypeA{ 
    int var1; 
} 

Class TypeB extends class TypeA{ 
    int var2; 
} 

Class X{ 
    public TypeA obj = new TypeB(); 
} 

如果我现在连载 “目标文件” 确实VAR2得到包括在内?

回答

4

是的,序列化不依赖于引用类型(实际上obj实际上是一个引用我的意思),而是依赖于被引用对象的类型/类,它仍然是TypeB。如果你打电话obj.getClass()它将返回TypeB.class这就是序列化会看到的。

+0

您可以序列化,反序列化,然后将'obj'转换为'TypeB'来证明是正确的。 – SteeveDroz

相关问题