在复制构造函数中,您只是在进行浅表复制,而您需要进行深表复制:
public Route(Route r) { this(r.sites);}在这里,您仍在复制的引用,该引用
list仍指向same
ArrayList。您也应该对其进行修改以创建列表的副本。可能还需要像下面这样在arraylist中创建元素的副本:
public Route(Route r) { List<Site> newSites = new ArrayList<Site>(); for (Site obj: r.sites) { // Add copy of obj to the newSites // So you need yet another copy constructor in 'Site' class. } this.sites = newSites;}


