我只是在掌握集合,发现 add() 方法实际上将对象深度复制到集合中。它们应该被称为“copyInto”之类的名称吗?
import java.util.*;
class Test {
public static void main(String[] args) {
Set <Frog> setOfFrogs = new HashSet <Frog>();
Frog frog1 = new Frog("Kermit");
Frog frog2 = new Frog("Bob");
setOfFrogs.add(frog1);
setOfFrogs.add(frog2);
frog1.name = "May";
frog2.name = "Mary";
for (Frog eachFrog : setOfFrogs){
System.out.println(eachFrog.name);
}
}
}
这会打印:“May”和“Mary”。
抱歉,这只是浅拷贝。我需要将这个“通过引用”的业务纳入我的头脑中......
最佳答案
.add(..)
只是添加对集合中对象的引用。它不进行深度复制。例如,如果您更改对象,则更改将反射(reflect)在集合中。
关于java - 许多Java集合都实现了add方法——它们实际上是深复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167033/