我可以打电话
final Class<?> returnType = method.getReturnType();
但是当我尝试调用getTypeParameters()
时并附有以下声明,
final TypeVariable<Class<?>>[] typeParameters = returnType.getTypeParameters();
我遇到编译器错误。
required: java.lang.reflect.TypeVariable<java.lang.Class<?>>[]
found: java.lang.reflect.TypeVariable<java.lang.Class<capture#1 of ?>>[]
这个说法有什么问题吗?我刚刚关注了 apidocs。
最佳答案
代码正在尝试执行安全操作。
需要创建Helper方法,以便通过类型推断捕获通配符。 编译器无法确认插入到列表中的对象的类型,并且会产生错误。当发生此类错误时,通常意味着编译器认为您为变量分配了错误的类型。正是出于这个原因,泛型被添加到 Java 语言中——以在编译时强制执行类型安全。
这里是解释相同内容的 java 文档引用。
http://docs.oracle.com/javase/tutorial/java/generics/capture.html
虽然这会起作用
final TypeVariable<?>[] typeParameters =returnType.getTypeParameters();
关于java - Class<?>#getTypeParameters() 的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481044/