有没有办法检查Object
是否是通用的,它需要多少参数?我知道由于类型擦除而无法得到这些参数类的名称,但是也不可能得到上述内容吗?
答案 0 :(得分:2)
只有java编译器知道泛型类型,因此在编译之后,基本上这些知识会丢失,并且您的代码不知道传递的泛型参数。
现在有人说,当你实现和实例化一个匿名类时,这显然不会发生(在运行时丢失知识 - 类型擦除)。通过本文Using TypeTokens to retrieve generic parameters
中的示例可以很好地解释这一点答案 1 :(得分:1)
如果对象本身的类是通用的,您只需检查:
obj.getClass().getTypeParameters();
这应该为您提供所有类型参数的数组,并且至少还为您提供类型参数的名称。但是我不认为它提供了有关所使用的实际类型的详细信息。
返回TypeVariable对象的数组,这些对象表示由此GenericDeclaration对象以声明顺序表示的泛型声明声明的类型变量。如果底层泛型声明没有声明类型变量,则返回长度为0的数组。