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