对象克隆涉及到浅克隆与深克隆,这里仅仅是记录一下浅克隆的用法,对深克隆没有深入的研究
对象克隆:对象的复制,完整的复制一个对象
clone()方法是定义在java.lang.Object类中,如下:
protected Object clone() throws CloneNotSupportedException
该方法是一个protected的方法,所以重载时要把clone()方法的属性设置为public,这样其它类才能调用这个clone类的clone()方法。
如果现在一个类的对象被克隆,则就必须在此类中明确地覆写此方法,但是此方法不能直接调用,必须实现Cloneable接口
Cloneable是一个接口,但是在此接口中没有规定任何的操作方法,所以此接口实际上属于标识接口,表示一种能力。如果对象的类不支持 Cloneable 接口,则重写 clone 方法的子类会抛出CloneNotSupportedException,以指示无法复制某个实例。
实现clone方法的步骤:
1.实现Cloneable接口
2.重载Object类中的clone()方法,重载时需定义为public
3.在重载方法中,调用super.clone()
class Person implements Cloneable{ //实现Cloneable接口表示可以被克隆
private String name;
public Person(String name){
this.name = name;
}
public void setName(String name){
this.name = name;
}
public String getName(String name){
return this.name;
}
public String toString(){
return "姓名:"+this.name;
}
public Object clone(){
try{
return super.clone(); //具体的克隆操作由父类完成
}catch(CloneNotSupportedException e){
return null;
}
}
}
public class CloneDemo01{
public static void main(String[] args){
Person p1 = new Person("张三");
Person p2 = (Person)p1.clone();
p2.setName("李四");
p1.setName("王五");
System.out.println("原始对象:"+p1);
System.out.println("克隆之后的对象:"+p2);
}
}
参考资料:李兴华视频讲解