日期:2014-05-20  浏览次数:20661 次

怪事!!不停向文件写入元素变化了的对象,对象的值确一直没变
我写了一个程序,不停地向文件写入一个类的对象,
可是这个对象改变后,写入文件里的对象竟然没有改变

例如:
有一个类A
class A{
int x;}


A a = new A();
objOut = new ObjectOutputStream(new FileOutputStream("1.txt"));

//线程1:不断向文件写入对象
while(true){
objOut.writeObject(a);
System.out.println(a.x);//用来验证a是否发生变化
}

//线程2:不断改变对象a元素的值
while(true){
a.x++;
}

非常奇怪的是,那句输出a.x的结果可以看出x的确发生变化了,可是写入文件里面的x却一直没有变化
一直都是a刚初始化那时候的值。
请问这是为什么?

------解决方案--------------------
A a = new A();
这句话结束,a的内存地址在你这段程序中就不变了,你写到文件里的应该是a的toString结果,a不变,那个值就不变。不管你把a.x改多少遍。