Necesito guardar un historial de estados sobre unas pocas acciones en una aplicación Java, que luego puedo volver a cargar para restaurar el estado en una determinada acción. En otras palabras, tengo una pantalla que tiene un estado asociado y necesito almacenarla, así como cualquier cambio en un historial, para poder restaurar el estado de la pantalla en cualquier momento. Esto es algo así como 'deshacer' pero no exactamente como la diferencia entre dos estados puede ser muy grande y no hay acciones bien definidas que cambien los estados.Crear historial de estados en Java
Déjenme explicar con un ejemplo: Un estado de pantalla muy básico podría contener un solo mapa. En el estado A, este mapa contiene una referencia a "Objeto1" con la clave "Tecla1" y "Objeto2" con la tecla "Tecla2". En el estado B, el mapa todavía contiene la referencia a "Object1", pero se modificó "Object2" y se agregó un "Object3". Ahora necesito poder volver al estado A, lo que implicaría "abandonar" Object3 y restaurar Object2 a su estado anterior. No puedo definir ninguna "acción de deshacer" personalizada, ya que no sé qué cambios se hicieron a Object2 o incluso cuál es el tipo de Object2. Además, como la referencia sigue siendo la misma para Object2 en los estados A y B, esos cambios se reflejan en el estado A, por lo que Object2 no es el mismo que era.
Me doy cuenta de que la mejor solución es implementar métodos de clonación, pero como necesito admitir todo tipo de objetos (incluidas las primitivas y las colecciones estándar) esto no es factible. Pensé en usar serializable, donde serializaría el mapa tan pronto como ocurriera una transición de estado y luego lo deserializaría cuando fuera necesario nuevamente, pero parece ser una solución muy fea.
¿Alguien tiene alguna otra idea? Gracias, Ristretto
Dijiste que tienes que admitir todo tipo de objetos y primitivos ... Entonces dices que piensas en serializar el mapa. ... no entendiendo exactamente tu punto. –