在Java中,
这确实是编译器执行的方式,并得到IDE等工具的支持,但是这种魔法是如何运作的呢?编译器是否以特殊的方式处理此方法?它是否实际上为每种类型生成
我理解这只是一个编译时构造,在运行时,Class的泛型类型参数是/将是什么并不会有任何区别。
Object.getClass
的类型签名为public final Class<?> getClass()
,但JavaDoc注释提到它实际上将是"Class<? extends |X|>
,其中|X|是调用getClass
的表达式的静态类型的擦除"。这确实是编译器执行的方式,并得到IDE等工具的支持,但是这种魔法是如何运作的呢?编译器是否以特殊的方式处理此方法?它是否实际上为每种类型生成
getClass()
的覆盖?我理解这只是一个编译时构造,在运行时,Class的泛型类型参数是/将是什么并不会有任何区别。