好吧,当做一个深拷贝时,显然不应该复制引用。但是,如果被复制的对象包含本身是对同一对象的引用的对象,则应该维护或应该只复制数据。
例子
public class Program() {
public void Main(String[] args) {
Person person = new Person();
person.setName("Simon");
List<Person> people = new ArrayList<Person>();
people.add(person);
people.add(person);
people.add(person);
List<Person> otherPeople = magicDeepCopyFunction(people);
otherPeople.get(0).setName("Adam");
// should this output 'Adam' or 'Simon'?
System.out.println(otherPeople.get(1));
}
}
我可以看到两者的论点,但我想知道共识是什么。