Java için 2 yıl boyunca yazdığım zamanlarda bile, bugün tuhaf davranışları farkettim.Java bağlantılı listedeki otomatik olarak nesne değerini değiştirmeyi devre dışı bırak
in list lim: abc 3
in list lid: abc 3
Ve evet, aynı nesneyi şu farklı listesine eklenir: İşte
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;
}
}
sonuç böyledir, benim kod bir göz atın. Bir liste kayıt nesnesi, durum "term =" abc ", tf = 2. olduğunda ve diğeri ise" abc "ve tf = 3 olduğunda kaydedilir. Ve sonunda, her bir listenin değerini yazdırdığımı görebilirsiniz. . Şaşırtıcı bir şekilde, limitte nesne lo, kapakta lo ile aynı değere sahiptir. Onları senkronize etmediğimde bile. Sorum şu: Neden Java bu tür diğer listeyi otomatik olarak güncelliyor (senkronize ediyor)? Bu davranış nasıl devre dışı bırakılır?
Evet, değiştirilebilir nesneler buna benzer. – dasblinkenlight