从数据文件加载保存的序列化对象时,我对变量的引用有问题。引用同一对象的所有变量似乎都不会随着更改而更新。我在下面截取了一个代码来说明问题。
Tournament test1 = new Tournament();
Tournament test2 = test1;
try {
FileInputStream fis = new FileInputStream("test.out");
ObjectInputStream in = new ObjectInputStream(fis);
test1 = (Tournament) in.readObject();
in.close();
}
catch (IOException ex){
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
catch (ClassNotFoundException ex){
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("test1: " + test1);
System.out.println("test2: " + test2);
运行此代码后, test1 和 test2 不再引用同一个对象。据我所知,他们应该这样做,因为在 test2 的声明中,它是对 test1 的引用。当 test1 更新时 test2 应该反映更改并在代码中调用时返回新对象。我是否在这里遗漏了一些重要的东西,或者我对 Java 中的变量引用是如何工作的有误解?