java - Class<?>#getTypeParameters() 的返回类型是什么?

标签 java class generics type-variables

给定 java.lang.reflect.Method .

我可以打电话

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/

相关文章:

java - 递归 Floodfill 溢出

java - 在 java 中使用 getResource() 读取路径名中包含空格的文件时出现尴尬的结果

java - 显示软键盘时无法让 ScrollView 滚动

generics - 为什么示例不能编译,也就是(co-、contra- 和 in-)方差如何工作?

java - java中泛型类的父类(super class)

java - 使用不同的 T 类调用 print(List<T> a, T b) 时出现错误

Java:绑定(bind)和连接方法

c# - 创建实例化类对象的数组

html - 有没有办法在 CSS 中进行克隆?

ruby - 当撤销类定义中的方法时,自定义类和ruby保留类有什么区别,例如 `Class`或 `Object`