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