Java List 添加元素要用拷貝

學Java遇到一個坑,那就是往ArrayList(別的collection應該也類似)中添加元素時,如果這個元素後面又改變了,之前添加的值也會被改變:

List<String> newString = new ArrayList<>();
String myString = "hello";
newString.add(myString);
System.out.println("newString = %s",newString[0]); //輸出 hello}
myString = "world";
System.out.println("currString = %s",newString[0]); //輸出 world

//兩次打印的會不一樣,如果要打印一樣,需要用clone
myString = "!";
newString.add(myString.clone());
System.out.println("currString = %s",newString[0]);
System.out.println("currString = %s",newString[1]);  


//如果是自定義類的化,用clone需要重載Cloneable 接口,此時要強轉並且處理異常。


;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章