是否有可能得到类似Class<List<Data>>.class
的东西?我听说你不能打电话.class
由于它在内部的工作原理,所以我想知道是否可以使用类似于 new ArrayList<Data>().getClass()
的东西可能有用吗?该类尤其不起作用,因为返回的类是 Class<? extends List<Data>>
所以我别无选择,这可能吗?
上下文:我正在尝试解析 List<Data>
使用square/moshi但该库似乎处于 alpha 阶段,因此没有相关文档。
最佳答案
没有Class
代表 List<Data>
的对象因为泛型类型只是编译时功能。可以将变量设置为静态类型 Class<List<Data>>
通过这样做
Class<List<Data>> clazz = (Class<List<Data>>) (Object) List.class;
您会在此处收到编译器警告。真的clazz
只是 List.class
编译器警告暗示您所做的事情不是一个好主意。
没有Class
代表 List<Data>
的对象但有一个Type
对象。
试试这个:
public class Main {
List<String> list;
public static void main(String[] args) throws Exception {
// prints java.util.List<java.lang.String>
System.out.println(Main.class.getField("list").getGenericType());
}
}
关于java - 获取 Class<T> 文字或类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32570393/