小编Mik*_*keM的帖子

Java中的通用方法参数的getClass()

以下Java方法无法编译:

<T extends Number> void foo(T t)
{
    Class<? extends T> klass = t.getClass();
}
Run Code Online (Sandbox Code Playgroud)

收到的错误是:类型不匹配:无法转换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(); 
Run Code Online (Sandbox Code Playgroud)

java generics reflection

9
推荐指数
2
解决办法
1932
查看次数

标签 统计

generics ×1

java ×1

reflection ×1