是否有可能得到类似于Class<List<Data>>.class
的东西?我读到你不能调用.class
,因为它是如何在内部工作的,所以我想知道是否使用类似于new ArrayList<Data>().getClass()
的东西可能会起作用?那个特别不起作用,因为返回的类是Class<? extends List<Data>>
,所以我没有选择,这是可能的吗?
上下文:我正在尝试使用square/moshi解析List<Data>
,但库似乎是在alpha上,所以没有关于它的文档。
没有表示List<Data>
的Class
对象,因为泛型类型只是编译时的特性。可以这样创建一个静态类型为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());
}
}