我遇到问题临时列表也会在原始列表内容被更改时被修改。预期结果应为“使用原件”。
public static void main(String[] args) {
List<Employ> e = new ArrayList<Employ>();
e.add(new Employ("Employ Original"));
//
List<Employ> exList = new ArrayList<>(e);
e.get(0).name = "Employ Modified";
// Result should be 'Employ Original'
System.out.println("" + exList.get(0).name);
}
public static class Employ {
public String name;
public Employ(String str) {
this.name = str;
}
}
答案 0 :(得分:1)
如果需要副本,则需要克隆原始对象。 ArrayList只为新列表创建新指针。指针仍然只指向原始对象。