2011-12-08 9 views
5

Supongamos que tengo 1 clase base y una clase derivada. La clase derivada tiene campos adicionales que la clase base no tiene.Serializar/deserializar a través de la clase super

Luego instanciar la clase derivada y asignarla a una definición de la clase base. ¿Qué sucede cuando serializo y deserializo el objeto a través de la clase base?

Por ejemplo:

Class TypeA{ 
    int var1; 
} 

Class TypeB extends class TypeA{ 
    int var2; 
} 

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

Si ahora serializar "obj" hace var2 ser incluido?

Respuesta

4

Sí, la serialización no depende del tipo de la referencia (que es realmente obj, quiero decir una referencia), sino del tipo/clase del objeto al que se hace referencia, que sigue siendo TypeB. Si llama al obj.getClass(), devolverá TypeB.class y eso es lo que verá la serialización también.

+0

Puedes serializar, deserializar y luego convertir 'obj' en' TypeB' para demostrarlo. – SteeveDroz

Cuestiones relacionadas