比起使用 clone 方法,在 Java 中拷贝一个对象更加简单的办法是使用拷贝构造器。比方说,我们的 Person 类中有如下的构造函数:

1
2
3
4
public Person(String name, int age) {
this.name = name;
this.age = age;
}

那么就可以有这样的拷贝构造器:

1
2
3
public Person(Person person) {
this(person.getName(), person.getAge());
}

该构造器可以使用和被拷贝对象同样的 nameage 属性,创建另一个 Person 对象。然而,必须要注意的是,拷贝不可变对象是完全没有必要的,所以我们只能用这种拷贝构造器来操作那些状态可变的对象。举例来说,只要 Person 类有这样的方法:

1
2
3
public void setName(String name) {
this.name = name;
}

那么就大可使用拷贝构造器。

更多资料,请参阅相关文档