Ich bemerke gerade seltsames Verhalten heute, auch wenn ich seit 2 Jahren in Java schreibe. nehmen hier einen Blick auf meinem Code,Deaktivieren Sie automatisch ändernden Objektwert in Java Linkedlist
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;
}
}
Ergebnis ist wie folgt aus:
in list lim: abc 3
in list lid: abc 3
Und ja, das ist gleiches Objekt, hinzugefügt, um andere Liste. Eine Liste, die das Objekt speichert, wenn es state ist, ist term = "abc", tf = 2. Und die andere speichert, wenn term = "abc" und tf = 3. Und Sie können sehen, dass ich am Ende den Wert jeder Liste drucke . Überraschenderweise hat Objekt lo in lim genau den gleichen Wert mit lo im Deckel. Auch wenn ich sie nicht synchronisiere. Meine Frage ist: Warum Java automatisch aktualisiert (synchronisieren) andere Liste so? Wie kann ich dieses Verhalten deaktivieren?
Ja, veränderbare Objekte sind so. – dasblinkenlight