来自对象的方法clone()不可见?
题:
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.
}
}
没有找到相关结果
已邀请:
8 个回复
田损比报
还实现了Cloneable接口。 例如。
逆捐凶撤小
具有受保护的访问权限。在
中添加
也改为
磐去裸猜饲
慷祈霖黑
舞备联
的
方法是继承的,未在
中定义。所以
可以调用对象的
,因为它受到保护,但是
本身并没有真正的
,所以
不能访问
的
因为没有
方法。虽然它们都在同一个包中,但你需要在
中定义一个
方法,以确保它真的“有”
。顺便说一句,不要忘记为
实现接口
。
辅奈
舞备联
桑娠贯涤
方法具有受保护的访问权限,意思是
。 有一个复制构造函数来手动复制对象是很好的。
阅读为什么Josh Bloch的复制构造函数