我想获取给定类声明的类型参数的数量。例如,类java.util.List
声明一个类型参数。 java.util.Map
声明两个。 java.util.function.BiFunction
声明三个。
理想情况下,我有一个方法可以接受Class
对象并返回该计数。像
SomeUtility.getCountOfTypeParameters(java.util.List.class);
注意:例如,声明类型为List<String>
的变量时,我对提供的自变量类型不感兴趣。
答案 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