我莫名其妙地覺得自己很蠢,問這個問題的參考,但更改Java列表
爲什麼不能使用EnhancedForStatement手改變一個List
引用一個對象?
private static List<String> list = new ArrayList<String>();
public static void main(String[] args) {
list.add("AAA");
list.add("BBB");
list.add("CCC");
for(String s : list){
if(s.equals("BBB")) s = "QQQ";
}
System.out.println(list);
}
將打印[AAA, BBB, CCC]
因爲引用的第二個元素沒有改變,作爲一個可以預期。
但爲什麼我不允許(或者是List
錯誤的類型?)手動更改列表條目的引用?這個例子中的字符串可以是任何複雜的類型,這個問題是關於改變List
中的引用。
編輯:好的,也許它很清楚爲什麼它的工作方式,但我怎樣才能完成參考改變?我無法相信List
的任何子類型都無法更改任何元素的引用。
edit2:所以使用EnhancedForStatement時無法更改引用?
但這樣做在一個循環可能會導致ConcurrentModificationException的 – dkatzel 2014-11-06 15:24:56
你必須用自己的指數做一個for循環,讓你知道要設置的指標。由於您沒有使用迭代器,因此不會有ConcurrentModificationException。 – user12722 2014-11-06 15:29:31
我預計這種答案。這不是我所問的,看到編輯 – dasLort 2014-11-06 15:42:34