я имел сериализованные несколько Data
и java.lang.Integer
объектов, но при чтении объекта данных с помощью потока Data
объектов значения не правильно прочитать в то время как в случае java.lang.Integer
объектов значение чтения являются правильными.Java объект сериализация проблема при чтении объекта
Data.java
public class Data implements Serializable{
private Integer count ;
public void setCount(Integer count) {
this.count = count;
}
public Integer getCount() {
return count;
}
}
SerializationTest.java
public class SerializationTest {
public static void main(String[] args) {
ObjectOutputStream oos = null;
ObjectOutputStream oosD = null;
ObjectInputStream ois = null;
ObjectInputStream oisD = null;
try{
oos = new ObjectOutputStream(new FileOutputStream(new File("integer1.dat"),false));
oosD = new ObjectOutputStream(new FileOutputStream(new File("Data1.dat"),false));
Data data = new Data();
data.setCount(10);
oos.writeObject(new Integer(10));
oosD.writeObject(data);
data.setCount(100);
oos.writeObject(new Integer(100));
oosD.writeObject(data);
data.setCount(1000);
oos.writeObject(new Integer(1000));
oosD.writeObject(data);
oos.close();
oosD.close();
ois = new ObjectInputStream(new FileInputStream(new File("integer1.dat")));
System.out.println("Integer output");
System.out.println("First Object : "+ (Integer)ois.readObject());
System.out.println("Second Object : "+ (Integer)ois.readObject());
System.out.println("Third Object : "+ (Integer)ois.readObject());
ois.close();
System.out.println("Data output");
oisD = new ObjectInputStream(new FileInputStream(new File("Data1.dat")));
System.out.println("First Object : "+ ((Data)oisD.readObject()).getCount());
System.out.println("Second Object : "+ ((Data)oisD.readObject()).getCount());
System.out.println("Third Object : "+ ((Data)oisD.readObject()).getCount());
oisD.close();
}
catch(IOException ioe){ ioe.printStackTrace(); }
catch(Exception e){ e.printStackTrace(); }
}
}
Выход:
Integer output
First Object : 10
Second Object : 100
Third Object : 1000
Data output
First Object : 10
Second Object : 10
Third Object : 10
Может кто-нибудь помочь мне выяснить вопрос с Data
объекта?
Как я меняю значение стоимости DATA Затем следует хранить последнее значение не первое значение объекта. –
@AlpeshGediya - я исправил ваше понимание, в какой части моего ответа вы не понимаете? – jtahlborn
поскольку Integer является неизменным классом, если я изменяю значение этого целого числа, тогда их ссылки будут разными, поэтому в этом случае он должен указывать на текущее значение объекта Integer и при изменении ссылки он должен хранить новое значение. –