Я просто замечаю странное поведение сегодня, даже когда я писал на Java 2 года. Вот посмотрите на мой код,Отключить автоматическое изменение значения объекта в java-связанном списке
public static void main() {
Lorem lo = new Lorem("abc", 2);
LinkedList<Lorem> lim = new LinkedList<>();
lim.add(lo);
LinkedList<Lorem> lid = new LinkedList<>();
lo.tf++;
lid.add(lo);
System.out.println("in list lim: " + lim.get(0).term + " " + lim.get(0).tf);
System.out.println("in list lid: " + lid.get(0).term + " " + lid.get(0).tf);
}
class Lorem {
public String term;
public int tf;
public Lorem(String term, int tf) {
this.term = term;
this.tf = tf;
}
}
результат, как это:
in list lim: abc 3
in list lid: abc 3
И да, тот же объект, добавляется в другой список. Один объект сохранения списка, когда он имеет состояние: term = «abc», tf = 2. И другое сохраняет, когда term = «abc» и tf = 3. И вы можете видеть, что в конце я печатаю значение каждого списка , Удивительно, что объект lo in lim имеет точно такое же значение, что и lo в крышке. Даже когда я их не синхронизирую. Мой вопрос: Почему Java автоматически обновляет (синхронизирует) другой список? Как отключить это поведение?
Да, изменяемые объекты такие. – dasblinkenlight