获取类<T>文本或类型



是否有可能得到类似于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());   
    }
}

相关内容

  • 没有找到相关文章

最新更新