从java.util.List中获取类<sometype> </sometype>

时间:2010-07-27 13:17:26

标签: java reflection

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

3 个答案:

答案 0 :(得分:6)

如果您的List定义了具体的类型参数,例如:

private class Test {
   private List<String> list;
}

然后你可以通过反思得到它:

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

但是,如果在编译时未知类型,则由于type erasure

而丢失该类型

答案 1 :(得分:6)

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

答案 2 :(得分:0)

您可以尝试这样的事情:

Class<List<Foo>> cls = (Class<List<Foo>>)(Object)List.class