每个类直接或间接的父类都是object,因此它们都包含clone()方法,但是因为该方法是protected,所以不能在类外进行访问,想要对一个对象进行克隆,需要重写clone()方法,以使clone方法赋值的对象与原对象同时独立存在。
克隆要点:1.被克隆的对象需要实现cloneable接口;
2.重写clone方法,修改访问修饰符为public,方法中调用super.clone方法得到需要的克隆对象。
注:没有复合对象,用浅克隆,有复合对象,用深度克隆。
示例如下:
@Getter
@Setter
@ToString
public class Test implements Cloneable
{
private User user;
@Override
public Object clone(){
Test test = null;
try{
test = (Test)supper.clone(); // 浅克隆
test.user = (User)user.clone(); // 深度克隆
}
catch(CloneNotSupportedException e){
// 异常处理
}
return test;
}
}