以下Java方法无法编译:
收到的错误信息为: 类型不匹配:无法将
实际结果类型是
<T extends Number> void foo(T t)
{
Class<? extends T> klass = t.getClass();
}
收到的错误信息为: 类型不匹配:无法将
Class<capture#3-of ? extends Number>
转换为Class<? extends T>
有人能解释一下为什么Class<? extends T>
是无效的,但Class<? extends Number>
是可以的吗?
Javadoc 说:实际结果类型是
Class<? extends |X|>
,其中|X|是调用getClass表达式的静态类型的擦除。例如,在此代码片段中不需要转换:
Number n = 0;
Class<? extends Number> c = n.getClass();