2011-12-08 10 views
5

1つの基本クラスと派生クラスがあるとします。 派生クラスには、基本クラスが持たない余分なフィールドがあります。スーパークラスを使用してシリアライズ/デシリアライズ

次に、派生クラスをインスタンス化し、それを基本クラスの定義に割り当てます。 基本クラスを使用してオブジェクトを直列化および逆シリアル化するとどうなりますか。例えば

Class TypeA{ 
    int var1; 
} 

Class TypeB extends class TypeA{ 
    int var2; 
} 

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

私は今、 "OBJ" を連載した場合は含まれますVAR2ていますか?

答えて

4

はい、シリアル化は、参照のオブジェクトの型/クラス(参照先はobj)に依存しませんが、まだTypeBです。 obj.getClass()を呼び出すと、TypeB.classが返されます。これが、シリアライゼーションにも表示されます。

+0

'' obj'を 'TypeB'にキャストしてデシリアライズして、その権利を証明することができます。 – SteeveDroz

関連する問題