当我打开Object class
源代码时,我可以在其中看到clone()
方法。
当我尝试在方法列表中看到clone()
方法时,不会显示
(如果我创建object
MyClass
作为myClass
并应用. dot operator
,它会向我提供eclipse IDE中所有可用方法的建议,但它不会显示{{1}该列表中的方法!!)
clone()
为什么会发生????
答案 0 :(得分:1)
如果您考虑official Oracle Java documentation for Object class,您会发现clone()
方法受到保护,由于多态,此方法只能在同一个包或子类中,但不能在外部。
因此,该方法只能在<{1}}包中 ,在此类的所有子项中 ,但不是在宣布儿童的包裹中。尝试阅读this topic以提高您对java访问修饰符的理解
但这里有一个厚:你可以像这样覆盖这个方法
java.lang
之后,您可以在宣布您的班级 @Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
的同一个套餐中使用方法clone
,但请准备好MyClass
您也可以使用自己的实现。只需实施CloneNotSupportedException
界面并提供您自己的Clonable
方法。
另外,如果你计划克隆对象必须等于你,你也应该覆盖clone
方法。
祝你好运!
答案 1 :(得分:0)
也许您尝试克隆的对象的创建者将克隆方法设为私有。此外,您可能不应该依赖Eclipse自动完成功能,特别是如果您刚开始使用Java。
答案 2 :(得分:0)
java.lang.Cloneable接口必须由类
实现MyClass实现了Cloneable。