是什么魔术使 java 中的 object.getClass() 返回一个类型化的 Class 实例



在Java中,Object.getClass的类型签名为public final Class<?> getClass(),但JavaDoc注释提到它真的是" Class<? extends |X|> 哪里 |X|是调用getClass的表达式的静态类型的擦除"。

确实如此,并且由

编译器强制执行,由 IDE:s 等提供支持,但是是什么魔术使它打勾?编译器是否以特殊方式处理此方法?它实际上是否为每种类型生成getClass()的覆盖?

我知道这只是一个编译时构造,在运行时它不会对类的泛型类型参数是什么/曾经产生任何影响。

是的,编译器会特别处理该方法。 例如,请参阅 Scope 类中 Eclipse 编译器中对createGetClassMethod()的调用。 (在同一类中还有其他一些对此方法的调用。

最新更新