【发布时间】:2018-05-29 16:59:52
【问题描述】:
我有一个员工对象
我无法更新员工对象
public class Employee {
public Employee(Integer id, Integer age, String gender, String fName, String lName) {
this.id = id;
this.age = age;
this.gender = gender;
this.firstName = fName;
this.lastName = lName;
}
private Integer id;
private Integer age;
private String gender;
private String firstName;
private String lastName;
我最初设置了一个员工列表,但想创建该列表的副本,然后对其进行更改。即使我正在创建新列表,它仍然会更改原始列表
public class ListTest {
public static void main(String[] args) {
List<Employee> employeeList = new ArrayList<>();
Employee employee = new Employee(1, 1, "MALE", "TEST", "TEST");
employeeList.add(employee);
List<Employee> listTwo = new ArrayList<>();
listTwo.addAll(employeeList);
listTwo.get(0).setAge(11);
System.out.println(employeeList.get(0).getAge());
}
}
输出为 11。
有没有更简单的方法可以从原始列表中克隆,并且任何更改都不应该应用于原始列表对象,而只是我创建的新列表
【问题讨论】:
-
如何让它不可变并提供一个复制构造函数?
-
我已经编辑了这个问题。 Java有没有办法做到这一点?
-
有您的经验的用户可能听说过“做事先研究”...
-
您需要注意,在 Java 中 一切都是对象,除了基本类型之外,一切都是引用以节省内存。两个数组的第一个元素是同一个对象。
-
@GhostCat 你知道这个问题有很好的答案吗?我没想到用户会对您的体验发表评论。