Java List 添加元素要用拷贝

发布时间 2023-10-28 22:56:08作者: zengzhaocheng

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


;