Java中的object.getClass()返回一个类型化的Class实例是什么魔力?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (7)

在Java中,Object.getClass有一个类型签名public final Class<?> getClass(),但是JavaDoc注释提到它确实是“ Class<? extends |X|>where | X |是getClass被称为的表达式的静态类型的擦除”。

这确实是这种情况,并且由IDE支持的编译器强制执行:s等,但是什么神奇使得它勾选?编译器是否以特殊的方式处理这个方法?它是否实际上getClass()为每种类型生成覆盖?

我明白这只是一个编译时构造,在运行时它不会对Class的泛型类型参数有什么影响。

提问于
用户回答回答于

是的,编译器专门处理该方法。例如,请参阅ScopecreateGetClassMethod()中Eclipse编译器中的调用。(在同一个类中还有一些其他的调用这个方法的方法。)

扫码关注云+社区