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 接口,此时要强转并且处理异常。


;

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