Java: getClass() of bounded type
当我在泛型上闲逛时,我注意到了一些东西。在下面的示例中,编译但不编译:doStuff1
doStuff2
public <T extends Foo> void doStuff1(T value) {
Class<? extends Foo> theClass = value.getClass();
}
public <T extends Foo> void doStuff2(T value) {
Class<? extends T> theClass = value.getClass();
}
因此,我查找了文档并发现了以下内容:Object.getClass()
实际结果类型为“类<?扩展|X|>|十|是调用 getClass 的表达式的静态类型的擦除。
这让我有点好奇。为什么设计成这样?如果适用,我可以理解将类型转换为原始类,但是我没有看到明显的理由为什么它们必须使其也杀死 。它为什么也摆脱它有什么具体的原因,或者它只是一个一般的“让我们摆脱一切,因为它更容易;无论如何,谁会需要它“的方法?getClass()
T