java - 对象克隆错误

标签 java clone

有疑问请澄清 让我解释 有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/

相关文章:

java - 如何将Android FBReaderJ源代码导入并编译到Eclipse(Windows)中?

java - servlet 返回空白页

javascript - 如何将 "connect"克隆元素应用到原始元素的更改也应用于克隆元素?

python - 如何在 Python 中生成克隆?

c++ - 使用公共(public)命名方法实现非公共(public)赋值运算符?

java - 为什么 Object.clone() 在 Java 中是原生的?

java - 将一个简单的枚举传递给 Java 中的构造函数

java - HDFS copyToLocalFile 抛出 java.io.IOException : Mkdirs failed to create file

java - try catch block 创建干净代码的最佳实践是什么?

java - 将对象克隆到数组列表中,java