从java.util.List<SomeType>中获取类

8
如何从表达式 java.util.List 中获取类?

1
很抱歉,您不能这样做,因为通用类型只适用于编译时。 - Zaki
3个回答

7
如果您的List已定义具体类型参数,例如:
private class Test {
   private List<String> list;
}

然后您可以通过反射获得它:

Type type = ((ParameterizedType) Test.class.getDeclaredField("list")
     .getGenericType()).getActualTypeArguments()[0];

然而,如果类型在编译时未知,则由于类型擦除而丢失。


6
我假设你想在运行时知道List的模板类,简短回答是:不可能。Java泛型仅在编译时使用:模板参数在字节码生成之前被擦除。这被称为“type erasure”。

0
你可以尝试这样做:
Class<List<Foo>> cls = (Class<List<Foo>>)(Object)List.class

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接