我们看到clone()方法是一个native方法,native方法的效率一般远高于非native方法。同时我们也可以看到关于clone()方法的描述也印证了Cloneable接口的相关介绍,如protected以及CloneNotSupportedException等。
package com.tirion.design.prototype;
public class GoldenCudgel implements Cloneable {
public GoldenCudgel() {
}
public GoldenCudgel(boolean disappear) {
this.disappear = disappear;
}
private boolean disappear;
public boolean isDisappear() {
return disappear;
}
public void setDisappear(boolean disappear) {
this.disappear = disappear;
}
public GoldenCudgel clone() {
GoldenCudgel goldenCudgel = null;
try {
goldenCudgel = (GoldenCudgel) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return goldenCudgel;
}
public boolean equals(GoldenCudgel obj) {
return obj.isDisappear() == disappear;
}
}
package com.tirion.design.prototype;
public class WuKong {
private static GoldenCudgel goldenCudgel = new GoldenCudgel(false);
public static void main(String[] args) {
GoldenCudgel copyGoldenCudgel = goldenCudgel.clone();
System.out.println(goldenCudgel);
System.out.println(copyGoldenCudgel);
System.out.println(goldenCudgel != copyGoldenCudgel);
System.out.println(goldenCudgel.getClass() == copyGoldenCudgel.getClass());
System.out.println(goldenCudgel.equals(copyGoldenCudgel));
}
}
com.tirion.design.prototype.GoldenCudgel@74a14482
com.tirion.