TypeToken获取运行时泛型类型

Posted niceboat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeToken获取运行时泛型类型相关的知识,希望对你有一定的参考价值。

 

最近正好使用到了guava的TypeToken来获取泛型类型

使用方法: return new TypeToken<T>(thisClass) {}.getRawType(); 

 

网上冲了一浪,发现关于泛型,有前人给出的总结:

Java泛型有这么一种规律: 
位于声明一侧的,源码里写了什么到运行时就能看到什么; 
位于使用一侧的,源码里写什么到运行时都没了。 

 

正好印证了TypeToken的实现思路:

  先创建一个TypeToken<T>的匿名继承类(属于类的申明),从而 getClass().getGenericSuperclass() 获得T的类型

 

参考 http://rednaxelafx.iteye.com/blog/586212



以上是关于TypeToken获取运行时泛型类型的主要内容,如果未能解决你的问题,请参考以下文章

Android:Gson通过借助TypeToken获取泛型参数的类型的方法

Google Guava 反射机制工具类

Gson通过借助TypeToken类来解决这个问题

编译时泛型类型大小检查

java Java的获取编译时泛型工具

如何在 Kotlin 中将 TypeToken + 泛型与 Gson 一起使用