Objetos Serializados
Hice un código para crear un objeto serializado y poder recuperarlo. Esto funciona perfectamente, pero mi duda es si tengo algún mecanismo para que al momento de recuperar la información del objeto serializado, pueda modificar estos datos (o agregar nuevos) sin necesidad de borrar los anteriores?. Uso la última versión de java para XP.
- Inicie sesión o regístrese para enviar comentarios
?
No entendí muy bien tu pregunta.
Si el objeto lo serializaste a un archivo o a base de datos o a un arreglo de bytes en memoria, entonces tienes una copia del objeto. A partir de ahi puedes serializar cualquier cantidad de instancias idénticas, deserializando el buffer de datos. Una vez que has creado una instancia a partir de ese buffer de datos, puedes modificarla a tu antojo y el buffer de datos que contiene el objeto serializado no se ve afectado.
Si te refieres a modificar la clase agregando propiedades y que se pueda leer una versión previa entonces tienes que hacer algo de manejo de versiones ya de manera manual en tu objeto. Es por ello que siempre debes ponerle un número de versión a tus clases que sean Serializable:
De esa forma si luego quitas o agregas propiedades, entonces cambias el número de versión y tienes que implementar los métodos para serializar y deserializar objetos de tu clase, porque solamente tú sabes qué propiedades manejar cuando la versión es 1, qué otras cosas cuando la versión es 2, otras para la versión 3, etc.
Pues lo que yo entendí...
sería bueno que checaras el patrón memento... está diseñado precisamente para manejar estados de un objeto, te podría servir...
Estudiate esto:
Estudiate esto:
Ahi esta la respuesta.
No esta nada clara la
No esta nada clara la pregunta.
Por ejemplo si tienes una persona
Si, si podrías modificar el valor de nombre, pero ¿a que te refieres con agregar nuevos? Que ahora persona tenga apellido?
No, eso no se puede. En última instancia puedes hacer que tu clase al serializarte envíe un valor diferente, para eso tienes que cambiar el comportamiento que tiene Java por default por un mecanismo personalizado.
Para no escribir más sobre esto ( porque quizá ni siquiera es lo que quieres ) les dejo el link: