java - 对象中的方法 clone() 不可见?

标签 java methods clone cloneable

问题:

package GoodQuestions;
public class MyClass {  
    MyClass() throws CloneNotSupportedException {
        try {
            throw new CloneNotSupportedException();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }   

    public static void main(String[] args) {    
        try {
            MyClass  obj = new MyClass();
            MyClass obj3 = (MyClass)obj.clone();            
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

这里的类'MyClass'可以通过调用'Object'类中的clone方法来克隆它自己的对象。 当我尝试在同一个包 'GoodQuestions' 中的另一个类('TestSingleTon')中克隆此类('MyClass')时,它会引发以下编译时错误。

'Object类型的clone()方法不可见'

所以这里是它抛出上述错误的代码?

package GoodQuestions;
public class TestSingleTon {
    public static void main(String[] args) {
        MyClass  obj = new MyClass();
        MyClass obj3 = obj.clone(); ---> here is the compile error.
    }
}

最佳答案

clone() 具有 protected 访问权限。在 MyClass

中添加这个
public Object clone(){  
    try{  
        return super.clone();  
    }catch(Exception e){ 
        return null; 
    }
}

也改成public class MyClass implements Cloneable

关于java - 对象中的方法 clone() 不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5116264/

相关文章:

git - 从 git 存储库克隆时出现 TLS 错误

jquery - 克隆带有图像的项目,图像需要一段时间才能出现

java - 变量变为字段、栈变为堆的过程是怎样的?

java - 使用包含列表的流过滤数据?

javascript - var functionName = function() {} vs function functionName() {}

c# - 如何在 C# 中克隆图形?

java - 如何在JavaFX中有效地滚动和缩放大图像?

java - 在 Java 中添加与 vector 不同的对象的最优雅的方法

Java 泛型接口(interface)与泛型方法,以及何时使用它们

objective-c - 从 objective-c 调用多个参数到 applescript-objc