如何获取List的类变量

时间:2011-11-15 08:04:25

标签: java class

在Java中获取类的.class就像:

Model.class

但是我怎样才能得到.class

List<Model>

传递一个类似的函数:

public List<T> getX(Class<List<T>> clz) {
   ...
}

我试过了:

(Class<List<Model>>) new ArrayList<Model>().getClass();

然而它给了我这个错误:

inconvertible types
found   : java.lang.Class<capture#181 of ? extends java.util.ArrayList>
required: java.lang.Class<java.util.List<a.b.c.Model>>

3 个答案:

答案 0 :(得分:2)

也许您需要将方法更改为:

public List<T> getX(List<T> list) {
    ... = list.getClass();
    ... = list.getClass ().getGenericSuperclass ();   
}

答案 1 :(得分:1)

答案 2 :(得分:0)

List<Model> 

在运行时不可用。

Java通过类型擦除来实现泛型[说它们用对象替换它的花哨方式]而不是说C#实现由于向后兼容性原因。

所以一个选项是:

public static <T> void getX(Class<List> clz, T type);

并称之为:

getX(List.class, vals);