У меня проблема со ссылкой на переменную при загрузке сохраненного сериализованного объекта из файла данных. Все переменные, ссылающиеся на один и тот же объект, похоже, не обновляются при изменении. Ниже приведен код, иллюстрирующий проблему.
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?