在 Java 中,Object.getClass
类型签名为 public final Class<?> getClass()
,但 JavaDoc 评论提到它实际上是“Class<? extends |X|>
,其中 |X| 是调用 getClass
的表达式的静态类型的删除”。
确实是这种情况,由编译器强制执行,由 IDE:s 等支持,但是是什么魔法使它成功呢?编译器是否以特殊方式处理此方法?它实际上会生成 getClass()
的覆盖吗?每种类型?
我知道这只是一个编译时构造,在运行时它不会对 Class 的泛型类型参数是什么产生任何影响。
最佳答案
是的,编译器会特殊对待方法。例如,请参阅 Scope 中 Eclipse 编译器对 createGetClassMethod()
的调用。类(class)。 (在同一个类中还有一些其他调用此方法的方法。)
关于java - 是什么魔法使 Java 中的 object.getClass() 返回类型化的 Class 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855347/