你如何获得带有反射的List <Type>?

Tri*_*Man 11 java reflection

我有一个方法,并检查method.getParameterTypes()[0],这是一个java.util.List.但我想弄清楚包含类型是什么,例如,如果它是一个java.util.List<String>我想要弄清楚它应该保持字符串.

我该怎么做呢?

谢谢!

pho*_*ser 22

Type listType = method.getGenericParameterTypes()[0];
if (listType instanceof ParameterizedType) {
    Type elementType = ((ParameterizedType) listType).getActualTypeArguments()[0];
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是元素类型不必是一个实际的Class一样String-它可能是一个类型变量,一个通配符类型等.

您可以在此处此处阅读有关从反射项中抓取泛型信息的更多信息.

  • 您只能使用此方法获取在方法声明中使用的形式参数(args 或结果)。无法通过反射分析调用中使用的泛型类型的实参数。 (2认同)