通过Gson获取泛型的类型

代码片段:

    static Type getSuperclassTypeParameter(Class<?> subclass)
    {
        Type superclass = subclass.getGenericSuperclass();
        if (superclass instanceof Class)
        {
            throw new RuntimeException("Missing type parameter.");
        }
        ParameterizedType parameterized = (ParameterizedType) superclass;
        return $Gson$Types.canonicalize(parameterized.getActualTypeArguments()[0]);
    }
时间: 2024-11-03 22:36:08

通过Gson获取泛型的类型的相关文章

Java获取泛型的类型Class

今天搭建框架的时候,要获取泛型<T>的Class具体例子: @EnableTransactionManagement @Transactional @Repository public class BasicDAO<T> extends HibernateDaoSupport { //实体类 private T entity; private Class<T> entityClass; public BasicDAO() { //通过反射机制获取泛型的类类型 entit

利用ParameterizedType获取泛型参数类型

//利用ParameterizedType获取java泛型的参数类型 public class Demo { public static void main(String[] args) { classTest(); interfaceTest(); } private static void classTest() { MySuperClass<Student, String> mySuperClass = new MySuperClass<Student, String>() 

泛型获取对应对象类型属性值

1.传入一个泛型List, 2.获取泛型的类型Type type对象, 3.然后获取type 对象的对应属性PropertyInfo proInfo对象, 4.然后根据属性对象proInfo 获取泛型对象T的对应属性值 代码如下: private List<T> Test<T>(List<T> lst, string aa) { List<T> l = new List<T>(); Type t = typeof(T); string cc =

java 反射和泛型-反射来获取泛型信息

通过指定对应的Class对象,程序可以获得该类里面所有的Field,不管该Field使用private 方法public.获得Field对象后都可以使用getType()来获取其类型. Class<?> type = f.getType();//获得字段的类型 但此方法只对普通Field有效,若该Field有泛型修饰,则不能准确得到该Field的泛型参数,如Map<String,Integer>; 为了获得指定Field的泛型类型,我们采用: Type gType = f.getG

Gson通过借助TypeToken获取泛型参数的类型的方法(转)

最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. class Foo<T>

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

最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. class Foo<T>

java获取泛型的实际类型

这是一个困扰了我好久的问题,在我写的android请求框架总结(二)中写到过利用框架自动解析json数据,代码如下 Object o; if (result.charAt(0) == '{') { //解析对象 o = new Gson().fromJson(result, clazz); } else { //这个方法是在stackoverflow中找到的可将json转换为list,普通的通过type去解析是不行的 o = new Gson().fromJson(result, com.goo

获取java泛型参数类型

1.Type和Class的区别 简单来说,Class实现了Type接口. Type源码定义: package java.lang.reflect; /**  * Type is the common superinterface for all types in the Java  * programming language. These include raw types, parameterized types,  * array types, type variables and pri

ParameterizedType获取java泛型参数类型

https://blog.csdn.net/qq_18242391/article/details/54251947 前言 这两天在看以前写的ssh项目时,遇到一个问题就是封装的BaseDaoImpl抽象类,构造方法里面是这样写的. Class<T> clazz; public BaseDaoImpl() { ParameterizedType pt = (ParameterizedType)getClass().getGenericSuperclass(); clazz = (Class&l