M
mike
Gast
hallo, habe dieses kleine Beispielprogramm, das mein Problem vrdeutlicht :
ich möchte in einer Methode (hier changeList) eine List aus der main-Methode benutzen und bearbeiten können, OHNE dass sich die ursprüngliche List ändert. Dies klappt bei mir aber nicht, die ursprüngliche List aus der main-methode wird auch geändert.
Wenn ich das richtig verstehe, wird in der Zeile List newTestList = new ArrayList(list) ein neues Objekt erzeugt und keine Referenz auf die Urprungs-List. Warum wird dann die Ursprungs-List auch geänder? Und wie kann ich das umgehen?
gruß mike
Code:
import java.util.*;
public class test {
public static void main(String[] args) {
List testList = new ArrayList();
testList.add(new Player("ich"));
testList.add(new Player("du"));
testList.add(new Player("er"));
System.out.println(testList.toString());
changeList(testList);
System.out.println(testList.toString());
}
private static void changeList(List list) {
List newTestList = new ArrayList(list);
for (int i=0; i<newTestList.size(); i++) {
((Player)newTestList.get(i)).name=("test");
}
}
}
class Player {
public String name;
public Player(String n) {
name = n;
}
public String toString() {
return name;
}
}
ich möchte in einer Methode (hier changeList) eine List aus der main-Methode benutzen und bearbeiten können, OHNE dass sich die ursprüngliche List ändert. Dies klappt bei mir aber nicht, die ursprüngliche List aus der main-methode wird auch geändert.
Wenn ich das richtig verstehe, wird in der Zeile List newTestList = new ArrayList(list) ein neues Objekt erzeugt und keine Referenz auf die Urprungs-List. Warum wird dann die Ursprungs-List auch geänder? Und wie kann ich das umgehen?
gruß mike