2
回答
json解析与泛型技术
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

在一个类中如

public abstract class Test<T> {
	public Test() {
		
	}
    Class<T> clazz;
   public void doGetClass() {
        Type genType = this.getClass().getGenericSuperclass();
        Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
        this.clazz = (Class<T>) params[0];
        System.out.println(clazz);
    }
}



上面的方法只能获取基本类型或者一个类的类型。如果碰到List<对象>就不能获取泛型了。

网上也有人用Gson完成过获取泛型类型

public class Test<T> {
    Type mType;
    public Test() {
        mType = getSuperclassTypeParameter(getClass());
    }

    /**
     * 得到泛型T的实际Type
     */
    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]);
    }
}



这样是可以的,但是我想问问fastjson能不能也做到获取泛型的类型呢


举报
吕檀溪
发帖于2年前 2回/1K+阅
共有2个答案 最后回答: 2年前
可以的,https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 看其中的第二点,泛型反序列化 TypeReference
推荐阿里开源JSON库fastjson,新发布1.1.47-android版本,针对android优化,性能更快,内存占用更小,jar包不足200k 
下载 http://repo1.maven.org/maven2/com/alibaba/fastjson/1.1.47.android/ 
源码 https://github.com/alibaba/fastjson/tree/android 
ReleaseNotes https://github.com/alibaba/fastjson/releases/tag/1.1.47-android 
文档 https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
顶部