Múltiple serialización heredada que mantiene la compatibilidad con versiones anteriores

Mi organización utiliza una técnica de serialización personalizada, donde almacenamos objetos iterativamente usando una secuencia de salida. Me encuentro con el siguiente problema:

Parenty Childclases implementadas Serializable. ParentLa clase tiene campos a,b,cy la Childclase tiene e. He añadido el campo dpara Parenty actualizada la serialización de los padres, y ahora nuestros clientes antiguos no puedo leer el Childcódigo de serialización correctamente. Esto se debe a que el Childcódigo de serialización va:

OutputStream in = getCurrentOutStream();

current_serialization_num = readVersionNum(in) // The version num is similar to Java's UID and is updated when fields are added.
readParent(in)
e = readField(in)

Dado que la serialización se realiza a través de un DataOutputStreambuen lector de XML no puede encargarse de esto. Tengo una solución fea para este problema, pero no se extenderá en absoluto, por lo que preferiría no contaminar la mente del lector introduciéndolo. Sin embargo, me gustaría escuchar cómo los demás manejarían una situación similar.

Respuesta 1

Los objetos creados por el antiguo padre se serializaron por el antiguo serialVersionUID. Los nuevos objetos se serializan con el nuevo serialVersionUID. La forma en que está implementando eso, Child no puede leer tanto los objetos antiguos como los nuevos al mismo tiempo.

Debes tener el mismo serialVersionUID. Si el compilador se queja, ponga una anotación suprimir. Desea comunicar claramente el compilador, es el mismo objeto.

Respuesta: 2

Tengo un problema al guardar mis resultados en el archivo. Tengo 2 Arraylists ArrayList <List <Integer>> posiciones ArrayList <List <Integer>> posiciones2 con un formato de datos como este: ...

Tengo una clase personalizada llamada "ergebnisse" con varios campos, uno de ellos es la puntuación de tipo Long. Quiero ordenar una ArrayList <ergebnisse> por puntuación. Intenté muchas cosas, pero la mayoría son ...

Estoy creando una web con Spring que permitirá al usuario ver los repositorios, sus problemas y agregar nuevos problemas si lo desea. El problema aparece cuando el usuario quiere crear un nuevo problema. Yo obtengo "...

Tengo un formulario que toma un nombre de usuario y lo pasa a LoginServlet.java que a su vez: Si no hay sesión: crea una sesión para ese nombre de usuario y reenvía la solicitud a LoginResultView.jsp que ...