是否可以获得与Class<List<Data>>.class
类似的内容?我读过你不能打电话给.class
,因为它是如何工作的,所以我想知道是否可能使用与new ArrayList<Data>().getClass()
类似的东西?特别是那一个不起作用,因为返回的类是Class<? extends List<Data>>
所以我没有选择,是否可能?
上下文:我正在尝试使用square/moshi解析List<Data>
,但该库似乎处于alpha状态,因此没有相关文档。
答案 0 :(得分:2)
没有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());
}
}