【发布时间】:2017-11-28 15:58:26
【问题描述】:
我想制作一个程序,它从FileDialog 获取.class(或者可能是.java 文件)文件,条件是该类是泛型类型,例如LinkedList<T>,@ 987654325@,或用户选择的任何数据结构。如果该类不是泛型类型,我想抛出异常。为了进一步解释,我想测试一下
inputClassX instanceof ParameterizedType
但因为我想测试任何可能无法实现 ParameterizedType 的任意类,所以我无法进行该测试。
我将如何测试一个对象或 Class 是否是泛型类型?
【问题讨论】:
-
我相信编译后的类不包含有关泛型类型参数的信息,所以不,如果不查看源代码,您将无法对其进行运行时测试。在这里打开 .class 文件的目的是什么?是用于某种插件系统吗?
-
@E_net4 类文件基本上保存了编译时已知的所有信息,除了(在我脑海中)不是运行时保留的注释和(取决于编译选项)参数名称方法。来自类实例创建表达式(如
new ArrayList<String>())的特定对象的类型参数本身就是被擦除的。
标签: java generics reflection parameterized-types