有人可以使用什么方法来覆盖此(getClass())方法?它实际上有什么目的可以解决。
java文档说明了这一点:By convention, the returned object should be obtained by calling super.clone. If a class and all of its superclasses (except Object) obey this convention, it will be the case that x.clone().getClass() == x.getClass().
为什么会这样?这个真理有什么作用?存储的信息在哪里知道它是什么类型的对象?这是如何工作的?
对不起这个问题我删了,我不应该。我打算编辑它。不会再发生了。
编辑:我误读了文档,它是最终的X-(但我仍然想问第二个问题答案 0 :(得分:2)
getClass
方法为public final
。它不能被覆盖。
使用clone
绝对不是一个好习惯。
我认为java文档所说的是不要改变clone的实现。如果您覆盖克隆,请使用super.clone
来保持相同的实现。
如果您不更改实施,那么重写的重点是什么?
您可以添加日志记录。
您可以将其从protected
放宽到public
。
等
如果你不改变实现,那么它将具有显然保证该属性的标准实现。另一方面,如果您更改实施,则所有投注均已关闭。
答案 1 :(得分:1)
存储对象反射信息的位置?
在课堂上。
有人可以使用什么来覆盖此(getClass())方法?什么 目的是它可以实际解决。
没有任何目的,因为getClass()
是最终的,所以它不能被覆盖,所以你的问题不是关于任何实际可能发生的事情。
为什么会这样?
因为Object.getClass()
返回调用它的Object
的类,并且因为Object.clone()
返回与调用它相同的类的对象,并且因为super.clone()
链{1}}来电将在Object.clone()
终止。