如何获得在一个类中声明的类型参数的数量?

时间:2019-02-14 04:38:43

标签: java reflection

我想获取给定类声明的类型参数的数量。例如,类java.util.List声明一个类型参数。 java.util.Map声明两个。 java.util.function.BiFunction声明三个。

理想情况下,我有一个方法可以接受Class对象并返回该计数。像

SomeUtility.getCountOfTypeParameters(java.util.List.class);

注意:例如,声明类型为List<String>的变量时,我对提供的自变量类型不感兴趣。

1 个答案:

答案 0 :(得分:3)

Class类提供了一个getTypeParameters()方法,

  

返回代表类型的TypeVariable对象的数组   由此表示的通用声明声明的变量   GenericDeclaration对象,按声明顺序。返回一个数组   如果基础泛型声明未声明任何类型,则长度为0   变量。

您只需检查返回数组的长度即可。

public static void main(String[] args) {
    Class<Map> clazz = Map.class;
    TypeVariable<Class<Map>>[] parameters = clazz.getTypeParameters();
    System.out.println(parameters.length);
}

打印

2