进行克隆直接复制,其实IO流也可以进行复制,不过不如Object类的clone方法调用本地方法(C、C++)来的快
class Last implements Cloneable {
private String name;
private Date data;
public Last(String name, Date data) {
//生成构造函数
this.name = name;
this.data = data;
}
@Override
protected Object clone() throws CloneNotSupportedException {
//重写clone方法
return super.clone();
}
@Override
public String toString() {
//生成toString方法
return "Last{" +
"name='" + name + '\'' +
", data=" + data +
'}';
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Date getData() {return data;}
public void setData(Date data) {this.data = data;}
}
浅克隆:只克隆了引用,原型属性改变,克隆的也会改变
public static void main(String[] args) throws CloneNotSupportedException {
Date date = new Date();
Last last = new Last("as",date);
Last clone = (Last) last.clone();
}
深克隆:在原型里重写clone方法;将属性也进行克隆,并进赋值
@Override
protected Object clone() throws CloneNotSupportedException {
//重写clone方法
Object obj= super.clone();
Last l=(Last) obj;
l.data=(Date) this.data.clone();
return obj;
}