2011-12-08 21 views
5

Supponiamo di avere 1 classe base e una classe derivata. La classe derivata ha campi aggiuntivi che la classe base non ha.Serializzare/deserializzare tramite super classe

Quindi istanzio la classe derivata e la assegna ad una definizione della classe base. Cosa accade quando serializzo e deserializza l'oggetto tramite la classe base.

Ad esempio:

Class TypeA{ 
    int var1; 
} 

Class TypeB extends class TypeA{ 
    int var2; 
} 

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

Se ora mi puntate "obj" fa var2 essere inclusi?

risposta

4

Sì, la serializzazione non dipende dal tipo di riferimento (che in realtà è obj, un riferimento intendo) ma dal tipo/classe dell'oggetto a cui si fa riferimento, che è ancora TypeB. Se chiami obj.getClass() restituirà TypeB.class e questo è ciò che vedrà anche la serializzazione.

+0

È possibile serializzare, deserializzare e quindi eseguire il comando 'obj' su' TipoB' per dimostrarlo. – SteeveDroz

Problemi correlati