He leído que, en general, las clases abstractas no se deben hacer Serializable en Java. Las subclases deben ser serializables (con métodos de lectura, escritura personalizados si es necesario, por ejemplo, cuando las clases abstractas tienen campos).¿Por qué no serializar clases abstractas en Java?
¿Cuál es la razón detrás de esto? ¿Por qué se considera mal diseño?
Update1: Tengo una clase abstracta con algunos campos y tres subclases. A partir de ahora, estoy usando el siguiente enfoque.
He hecho todas las subclases serializables con métodos de lectura, escritura personalizados. En la clase abstracta tengo los siguientes métodos.
void writeFields(ObjectOutputStream out)throws IOException { .... }
void readFields(ObjectInputStream in) throws IOException, ClassNotFoundException{ ... }
En la lectura personalizada, escribir métodos de las subclases que llamo a estos métodos (de) serializar los campos de la clase abstracta. ¿Es este enfoque correcto? ¿O hay un mejor enfoque diferente?
Actualización 2: Tomé el consejo de Tom e hice mi clase abstracta Serializable. (Quiero que todas las subclases sean Serializables y tengo datos en la clase abstracta) Esto es un lado, pero solo para completar la historia Estoy usando reflection to change final fields as advised by Jeremy Manson.
Esta pregunta se aplica a CUALQUIER lenguaje orientado a objetos. –