Senior Sanchez
2006-03-21, 23:18:09
Hi,
also das ist wirklich kurios und ich kanns mir nicht erklären, aber ich versuche das mal vereinfacht darzulegen.
Ich habe eine Klasse Formel, die als Klassenvariable eine Liste besitzt, die Formel-Objekte aufnehmen kann (is ne ArrayList<Formel>).
private static List<Formel> formelList = new ArrayList<Formel>();
Nun erzeuge ich in einer Methode der Klasse Formel eine neue ArrayList<Formel> die nicht auf formelList zugreift, und füge ein paar Elemente hinzu:
List<Formel> temp = new ArrayList<Formel>();
temp.add(new Formel());
temp.add(new Formel());
Das Kuriose ist jetzt, dass bei diesen add-Operationen die formelList genau diegleichen Elemente auch geadded bekommt! Die tauchen plötzlich in der Liste auf und nach diesen add-Operationen besitzen temp und formelList genau dieselben Elemente, obwohl ich gar keine add-Operation auf formelList ausgeführt habe.
Entferne ich jetzt aber das static aus der formelList-Definition, so passiert dies nicht mehr!
Kann mir das jemand erklären?
also das ist wirklich kurios und ich kanns mir nicht erklären, aber ich versuche das mal vereinfacht darzulegen.
Ich habe eine Klasse Formel, die als Klassenvariable eine Liste besitzt, die Formel-Objekte aufnehmen kann (is ne ArrayList<Formel>).
private static List<Formel> formelList = new ArrayList<Formel>();
Nun erzeuge ich in einer Methode der Klasse Formel eine neue ArrayList<Formel> die nicht auf formelList zugreift, und füge ein paar Elemente hinzu:
List<Formel> temp = new ArrayList<Formel>();
temp.add(new Formel());
temp.add(new Formel());
Das Kuriose ist jetzt, dass bei diesen add-Operationen die formelList genau diegleichen Elemente auch geadded bekommt! Die tauchen plötzlich in der Liste auf und nach diesen add-Operationen besitzen temp und formelList genau dieselben Elemente, obwohl ich gar keine add-Operation auf formelList ausgeführt habe.
Entferne ich jetzt aber das static aus der formelList-Definition, so passiert dies nicht mehr!
Kann mir das jemand erklären?