对象反射信息存储在哪里?

时间:2012-03-31 04:46:43

标签: java

  1. 有人可以使用什么方法来覆盖此(getClass())方法?它实际上有什么目的可以解决。

  2. 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().为什么会这样?这个真理有什么作用?存储的信息在哪里知道它是什么类型的对象?这是如何工作的?

  3. 对不起这个问题我删了,我不应该。我打算编辑它。不会再发生了。

    编辑:我误读了文档,它是最终的X-(但我仍然想问第二个问题

2 个答案:

答案 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()终止。