java - clone() 具有 protected 访问权限 - 公开对象 clone()

标签 java clone

我正在编写代码来创建对象、克隆对象,然后比较两者。

所讨论的对象 Octagon 是对象 GeometricObject 的扩展

public class Octagon extends GeometricObject implements Comparable<Octagon>, Cloneable {
private double side;

public Octagon (double side){
    this.side = side;
}

public Object clone() throws CloneNotSupportedException {
    Octagon octClone = (Octagon)super.clone();
    return octClone;
}

在名为 Octagon.java 的文件中

在另一个 TestOctagon.java 中,是我的主要方法:

public class TestOctagon {
    public static void main(String[] args) {
        GeometricObject test = new Octagon(5); //create an Octagon with a side of 5
        System.out.println("Area is: "+test.getArea());
        System.out.println("Perimeter is: "+test.getPerimeter());

        Octagon copy = (Octagon)test.clone();


    }
}

错误出现在 main 方法的最后一行。

clone() has protected access in Object

我试过重命名 Octagon 中的克隆方法,比如 cloneme,但随后出现错误:

cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject

我感觉问题是因为 Octagon 扩展了另一个对象,也许吧?

我真的找不到任何解决方案,我花了一个小时阅读这里所有其他的 clone() 帖子。

编辑:我需要使用克隆。我知道普遍的共识是克隆很无聊。

最佳答案

替换

Octagon copy = (Octagon)test.clone();

Octagon copy = (Octagon)((Octagon)test).clone();

这样被调用的克隆方法就是您的类中的一个。

关于java - clone() 具有 protected 访问权限 - 公开对象 clone(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044887/

相关文章:

java - 在伦敦地铁上进行网络检测

java - 如何按类型动态创建通用的 lambda 实现?

java - ArrayList toArray 方法类转换异常

c# - 克隆 WPF 控件和对象层次结构

java - Java 中的强制可克隆接口(interface)

java - 从 List<Optional> 转换为 List<Optional<?>> 是否安全?

java - OData POST 响应

c# - Binding 没有 Clone 方法,复制它的有效方法是什么

java - 使用java中的父类(super class)对象创建未知子类的新实例

r - 有没有办法将 R 对象传输到 Linux 上的单独 R session ?