【发布时间】:2011-03-29 07:54:26
【问题描述】:
Java 文档说 -
类 Object 本身并不 实现接口Cloneable,所以 在对象上调用 clone 方法 其类是 Object 将导致 在运行时抛出异常。
为什么 Object 类中的 clone 方法是受保护的?是这样吗?
这意味着任何不实现可克隆的类在调用其克隆方法时都会抛出 CloneNotSupported 异常。
我运行了一个测试程序
public class Test extends ABC implements Cloneable{
@Override
public Object clone() throws CloneNotSupportedException {
System.out.println("calling super.clone");
return super.clone();
}
public static void main(String[] args) {
Test t = new Test();
try{
t.clone();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
class ABC{
}
从 Class Test 的克隆方法 super.clone 被调用?
为什么不抛出异常?
【问题讨论】:
-
[关闭]?这不是一个论坛。你应该只选择一个最好的答案并接受它。
-
[关闭] 在问题标题的末尾在 StackOverflow 上具有非常特殊的含义。这意味着至少有五个拥有关闭权限的用户或至少一个版主认为您的问题不符合 StackOverflow 上的预期标准。这目前不适用于您的问题,因此我将删除您问题标题前面的 [Closed] 标签。如果您确实希望 [Closed] 标记保留,请将其放回原处,我不会再次编辑它 - 或者要求我撤消更改,我会这样做。
标签: java superclass cloneable