0

是否有可能得到类似的东西Class<List<Data>>.class?我读到你不能打电话.class,因为它是如何在内部工作的,所以我想知道是否可能使用类似于new ArrayList<Data>().getClass()可能的东西?那个特别不起作用,因为返回的类是Class<? extends List<Data>>所以我没有选择,甚至可能吗?

上下文:我正在尝试List<Data>使用square/moshi解析,但该库似乎在 alpha 上,因此没有关于它的文档。

4

1 回答 1

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());   
    }
}
于 2015-09-14T17:36:38.793 回答