获取List中元素的类型,其中List是Java中方法的返回类型

我使用反射将包中的每个方法都获取了,然后根据每个方法的返回类型,我想执行一些操作。但不幸的是,我在方面遇到了问题。当我找到一种方法来返回诸如List之类的集合时,我找不到找到有关List元素类型的方法。我使用下面的代码来获取方法的返回类型。

if (method.getReturnType().equals(List.class)){

statement;

}

上面的代码运行良好,并获得了所有返回List的方法,但它只是将java.util.List作为返回类型返回,而我找不到找到了解该List中元素类型的方法。例如,如果我有这样的方法:

public List<CmsCustomerModel> getCustomerModel(){

statement;

}

我不知道如何将CmsCustomerModel类作为返回列表的一种元素。我想知道是否有人帮助我找到这个。请指导我。

回答:

您可以使用getGenericReturnTypewhich返回a Type而不是a Class,并允许您获取所有类型参数等。简短而完整的示例:

import java.lang.reflect.*;

import java.util.*;

public class Test {

public static void main(String [] args) {

for (Method method : Test.class.getMethods()) {

System.out.println(method.getName());

Type type = method.getGenericReturnType();

System.out.println("Return type: " + type.getTypeName());

if (type instanceof ParameterizedType)

{

ParameterizedType pt = (ParameterizedType) type;

System.out.println("Parameterized: " + pt.getRawType());

for (Type arg : pt.getActualTypeArguments())

{

System.out.println(" " + arg);

}

}

}

}

public static List<Integer> getNumbers() {

return null;

}

public static List<String> getStrings() {

return null;

}

}

输出包括:

getStrings

Return type: java.util.List<java.lang.String>

Parameterized: interface java.util.List

class java.lang.String

getNumbers

Return type: java.util.List<java.lang.Integer>

Parameterized: interface java.util.List

class java.lang.Integer

以上是 获取List中元素的类型,其中List是Java中方法的返回类型 的全部内容, 来源链接: utcz.com/qa/432856.html

回到顶部