对象要实现clone(克隆),则其class类(或父类)必须实现Cloneable接口,否则会保错java.lang.CloneNotSupportedException
实现了Cloneable接口就可以调用Object.clone,但是Object.clone是protected,所以最好是改为public
public class Standby extends Document implements Cloneable{
@Override
public Object clone(){
try {
return super.clone();
}catch (CloneNotSupportedException var){
var.printStackTrace();
return null;
}
}
public static void main(String[] args) throws Exception {
Standby standby = new Standby();
standby.put("ssf","wee");
Standby c = (Standby) standby.clone();
System.out.println(c);
}
}
这样直接使用super.clone()是浅复制,也就说只复制了对象本事,对象的属性没有复制。
如果要全部复制(深复制),则需要对属性复制
@Override
public Object clone() {
try {
IRequest iRequest = (IRequest) super.clone();
iRequest.setVariableDocument((Standby) this.getVariableDocument().clone());
if (this.getPoll() != null) {
iRequest.setPoll((IRequest) this.getPoll().clone());
}
return iRequest;
}catch (CloneNotSupportedException var){
var.printStackTrace();
return null;
}
}