在 Java 中,Object.getClass
类型签名为public final Class<?> getClass()
,但 JavaDoc 注释中提到它实际上是“Class<? extends |X|>
其中 |X| 是getClass
被调用的表达式的静态类型的擦除”。
确实是这种情况,并且由编译器强制执行,并由 IDE:s 等支持,但是是什么魔法使这个滴答作响?编译器是否以特殊方式处理此方法?它实际上是否getClass()
为每种类型生成覆盖?
我知道这只是一个编译时构造,在运行时它不会有任何区别 Class 的泛型类型参数是/曾经是什么。