Cloneable的使用
- 在开发过程中,拷贝实例是常见的一种操作,如果一个类中的字段较多,而我们又采用在客户端中逐字段复制的方 法进行拷贝操作的话,将不可避免的造成客户端代码繁杂冗长,而且也无法对类中的私有成员进行复制,而如果让需要 具备拷贝功能的类实现Cloneable接口,并重写clone()方法,就可以通过调用clone()方法的方式简洁地实现实例 拷贝功能
public class DeepCopy implements Cloneable{
private int id;
private String name;
private String school;
@Override
protected Object clone() {
DeepCopy deepCopy = null;
try {
Random r = new Random(1);
deepCopy = (DeepCopy)super.clone();
deepCopy.id = r.nextInt(100);
deepCopy.name = this.name;
deepCopy.school = this.school;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return deepCopy;
}
}
public static void main(String[] args) {
// write your code here
DeepCopy deepCopy = new DeepCopy();
deepCopy.setId(1);
deepCopy.setName("zs");
deepCopy.setSchool("一中");
Object clone = deepCopy.clone();
System.out.println(deepCopy.toString());
System.out.println(clone.toString());
}
//输出结果
DeepCopy{id=1, name='zs', school='一中'}
DeepCopy{id=85, name='zs', school='一中'}