为什么clone()方法在java.lang.Object中受到保护?
clone()
定义为的受保护的具体原因是java.lang.Object
什么?
回答:
克隆受到保护的事实非常令人怀疑-事实是该clone方法未在Cloneable接口中声明。
它使该方法对于获取数据副本非常无用,因为你不能说:
if(a instanceof Cloneable) { copy = ((Cloneable) a).clone();
}
我认为,Cloneable现在的设计在很大程度上被认为是一个错误(以下引用)。我通常希望能够实现接口的实现,Cloneable但不一定要实现接口Cloneable(类似于的使用Serializable)。没有反思就无法做到这一点:
ISomething i = ...if (i instanceof Cloneable) {
//DAMN! I Need to know about ISomethingImpl! Unless...
copy = (ISomething) i.getClass().getMethod("clone").invoke(i);
}
以上是 为什么clone()方法在java.lang.Object中受到保护? 的全部内容, 来源链接: utcz.com/qa/418033.html