当前位置: 首页 > 面试题库 >

clone()具有受保护的访问权限-公开对象clone()

单于庆
2023-03-14
问题内容

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

所讨论的对象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

我尝试重命名Octagaon中的clone方法,对clome说,但是随后出现错误:

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();

这样被调用的clone方法就是您的类之一。



 类似资料:
  • 我已经实现了自己的,我想在类声明之外调用它的方法,但是错误显示:updateProgress(double,double)在任务中具有受保护的访问权限

  • 问题内容: 我有两节课。 类具有受保护的方法,是的实例。 Class 与class在同一包中。 我正在尝试访问,但正在获取… 怎么了? 问题答案: 编译器应该捕获这样的错误。当您显然在运行时得到此消息时,发生了一些奇怪的事情。可能您已更改了源代码,但已完全重新编译。 另一个潜在但晦涩的问题是通过不同的类加载器加载类。即使包名称相同,从不同的类加载器加载的类也将位于不同的包中(以与由不同的类加载器加

  • 通过向资源服务器出示访问令牌,客户端访问受保护资源。资源服务器必须验证访问令牌,并确保它没有过期且其范围涵盖了请求的资源。资源服务器用于验证访问令牌的方法(以及任何错误响应)超出了本规范的范围,但一般包括资源服务器和授权服务器之间的互动或协调。 客户端使用访问令牌与资源服务器进行证认的方法依赖于授权服务器颁发的访问令牌的类型。通常,它涉及到使用具有所采用的访问令牌类型的规范定义的身份验证方案(如R

  • 问题内容: 我想了解以下示例中的情况(通过包从子类外部访问受保护的成员)。 我知道对于包外部的类,子类只能通过继承才能看到受保护的成员。 有两个包:和。 : : : 可以理解,中的方法可以访问,因为受保护的成员只能通过继承来访问。 我的问题是,为什么是方法,通过在基准访问时,工作正常的方法 ,但 将无法正常工作 通过访问时的参考? 问题答案: 该类中的代码被允许通过type的引用访问受保护的成员。

  • 问题内容: 我正在研究使用SQL LocalDB作为客户端数据库,它将替代.net 4中开发的内部应用程序中的当前SQL CE 3.5数据库。 我遇到了一个不确定的问题,那就是LocalDB实例的安全设置。 如果我在.net中设置了一个脚本来创建一个私有LocalDB实例,例如(localdb)\ T1,然后在该实例中创建了一个新数据库,并添加了一个SQL用户帐户+密码(非域帐户),如何停止本地使

  • 所以我希望有人能给我一些关于我问题的见解。一直在搜索,阅读博客/文章,查看文档,但无法真正理解。。。 因此,如果我想将Openshift/OKD部署到VPS,不管是不是一体化部署,我如何保护web控制台? 我希望能够执行“oc集群运行”, public-master等于我的本地ip或公共ip。然后,使用iptables公开阻止对该端口的访问,并使用ssh端口转发(在putty中)来访问web控制台