为了账号安全,请及时绑定邮箱和手机立即绑定

如下内容,我为什么不能调用clone()???

如下内容,我为什么不能调用clone()???

PHP
四季花海 2023-04-24 19:15:15
package test;public class C extends Object {void test() {Object object = new Object();object.clone();//The method clone() from the type Object is not visible}}
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

Object类对象是无法被clone的,至少当引用obj被声明为Object类的时候,你不能这么做... 
因为Java中并不是所有的类都可以被克隆(而且JDK中还描述说不能保证某些类clone的结果x.clone()!=x绝对成立),所以Object类对象无法调用clone()... 
还有super不是指Object而是指其父类的引用。
由于clone是object类的一个protected方法,代码中不能直接调用它
子类只能受保护的clone方法克隆他自己,为此必须重新定义clone方法,
并将其设为public,一般情况下,建议实现cloneable标记接口,并通过调用super.clone()方法。

查看完整回答
反对 回复 2023-04-27
?
慕斯王

TA贡献1864条经验 获得超2个赞

你要用clone()方法,必须将C实现Cloneable标记接口才可以,我觉得你应该这个测试
public class C extends Object implements Cloneable{

void test() {
C c= new C();
C c2=(Object) c.clone();//The method clone() from the type Object is not visible
}
}

查看完整回答
反对 回复 2023-04-27
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信