java - 是什么魔法使 Java 中的 object.getClass() 返回类型化的 Class 实例?

标签 java generics

在 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/

相关文章:

delphi - 如何修改TList<record>值?

java - 在 map 上强制执行泛型

java - 如何根据父类中可用的信息进行反序列化

java - java中的泛型方法不返回预期的类型

java - Springframework 中的单独序列化器

java - Firebase Auth UI 的电子邮件验证

java - 如何在MAVEN中保持更新的库?

Java - 解决多个条件逻辑的设计模式

java - 如何给你的程序添加声音?

具有继承性的 Java 接口(interface)