
Ayuda con la Serializacion
Publicado por Edgar Ricardo (5 intervenciones) el 03/03/2014 21:28:41
El problemas es este: Serializo un objeto, y lo introduzco a un archivo sin problemas,
luego realizo una modificación al estado del objeto original y lo vuelvo a serializar e
introducir al archivo. Yo esperaría tener dos objetos en el archivo uno con el estado
antiguo y otro con el estado actualizado.... Pero, al tratar de recuperar los objetos me
doy cuenta que en efecto se han guardado dos objetos pero con el mismo estado,
el primero haciendo caso omiso a la última actualización del estado....
Eso tiene sentido???
El código es este
Al correrlo esperaría una salida
Edgar
Perdomo
pero obtengo
Edgar
Edgar
luego realizo una modificación al estado del objeto original y lo vuelvo a serializar e
introducir al archivo. Yo esperaría tener dos objetos en el archivo uno con el estado
antiguo y otro con el estado actualizado.... Pero, al tratar de recuperar los objetos me
doy cuenta que en efecto se han guardado dos objetos pero con el mismo estado,
el primero haciendo caso omiso a la última actualización del estado....
Eso tiene sentido???
El código es este
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.*;
public class ObjectInputStreamDemo
implements java.io.Serializable{
String nom ;
public ObjectInputStreamDemo( String s){
nom = s ;
}
public static void main(String[] args) {
ObjectInputStreamDemo a, b ;
a = new ObjectInputStreamDemo("Edgar") ;
try {
FileOutputStream out = new FileOutputStream("test.bin");
ObjectOutputStream oout = new ObjectOutputStream(out);
//guardo el objeto a
oout.writeObject(a);
oout.flush();
//realizo una actualización del estado
a.nom = "Perdomo";
oout.writeObject(a);
ObjectInputStream ois =
new ObjectInputStream(new FileInputStream("test.bin"));
b = (ObjectInputStreamDemo)ois.readObject() ;
System.out.println(b.nom);
b = (ObjectInputStreamDemo)ois.readObject() ;
System.out.println(b.nom);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Al correrlo esperaría una salida
Edgar
Perdomo
pero obtengo
Edgar
Edgar
Valora esta pregunta


0