我有一個問題,或者我不明白的代碼片段: 這就是:值以我的ArrayList重寫
List<Person> persons = new ArrayList<>();
Person person = new Person();
person.prename = "Klaus";
for (int i = 0; i < 5; i++) {
person.surname = String.valueOf(i);
persons.add(person);
System.out.println(person.prename + ". " + person.surname);
}
System.out.println("=======");
for (Person person1 : persons) {
System.err.println(person1.prename + ". " + person1.surname);
}
結果是:
Klaus. 0
Klaus. 1
Klaus. 2
Klaus. 3
Klaus. 4
=======
Klaus. 4
Klaus. 4
Klaus. 4
Klaus. 4
Klaus. 4
爲什麼是值列表中的值被覆蓋?我怎樣才能防止這樣的結果?
您要添加的幾參考到同一個'Person'對象。爲循環的每次迭代創建一個新的Person對象。 (這是*許多*問題的重複,但我懷疑很難快速找到一個...) –
您的Person類是一個引用類型,因此您在循環內一次又一次地更新同一個引用。 –