如何实现类型参数是参数化类型的约束

时间:2017-06-25 17:59:26

标签: java generics reflection parameterized-types

我希望制作一个程序,该程序来自FileDialog获取.class(或可能是.java文件)文件,条件是该类是泛型类型,例如LinkedList<T>ArrayList<T>或用户选择的任何数据结构。如果类不是泛型类型,我想抛出异常。有关进一步说明,我想测试是否

inputClassX instanceof ParameterizedType

但是因为我想测试任何可能没有实现ParameterizedType的任意类,我不能做那个测试。

如何测试对象或Class是否为泛型类型?

1 个答案:

答案 0 :(得分:2)

对于任意Class对象,您可以检查getTypeParameters返回的数组的长度,如果它不为零,则表示该类具有泛型类型参数:

System.out.println(String.class.getTypeParameters().length != 0); // false
System.out.println(List.class.getTypeParameters().length != 0); // true