对象克隆错误

时间:2014-12-11 10:28:46

标签: java clone

有疑问请澄清我 让我解释 有2个班级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类 请解释为什么class B无法获得clone()方法

1 个答案:

答案 0 :(得分:5)

clone()方法受到保护。由于您的主要属于类A的一部分,因此它允许在A类型的对象上调用受保护的方法,因此a.clone()将正常工作。

b.clone()失败,clone受到保护,因此在B课程之外无法使用,除非B公开覆盖{。}}。

Here是关于clone方法的Javadoc。