在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>>
答案 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);