有疑问请澄清 让我解释 有2个类(class)A级和B级
public class A implements Cloneable{
public static void main(String[] args) {
A a1 = new A();
try {
A a2 = (A) a1.clone();//works fine
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
B b1 = new B();
B b2 = (B) b1.clone();//cannot get this method
}
}
class B implements Cloneable {
}
当我编译此代码时出现以下错误
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method clone() from the type Object is not visible
我知道这两个类都扩展了 Java.lang.Object
类
请解释为什么B类
无法获取clone()
方法
最佳答案
clone()
方法受到保护。由于您的 main 是类 A
的一部分,因此它允许在 A
类型的对象上调用 protected 方法,因此 a.clone()
将工作正常即可。
b.clone()
失败,因为 clone
受到保护,因此在 B
类之外不可用,除非它是公开的被 B
覆盖。
Here是关于 clone
方法的 Javadoc。
关于java - 对象克隆错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420602/