Gson获取type类型完成json to javabean的转化

Gson的API fromJson()的使用方法的第二个参数是一个type类型

ApiResponseModel<CashierModel> result = GsonUtils.fromJson(str, Type);

例如上面的代码,那么,如何才能正确的从范型中获取Type呢?比方说如何获取Test中Test的类型呢?Test是不确定的类。

首先,我们定一个Callback的子类,代码如下:

class Test<Test> extends Callback<Test>{
	...省略代码
}	

Callback类的结构如下:

class Callback<T>{
public Type type;
public Callback(){
	type = getType(getClass());
}
static void getType(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]);
	}
}

这段对代码就可以解决问题。下面简单的来分析下这段简介的代码。这里的getClass方法是用来获取的是Test类,而superclass对应的就是Callback类。当采用匿名内部类的形式的时候,这种方法就能够正确的获取type,按照我的写法,其实也可以不用superClass来实现。总结下来,获取范型类型的方法就是以下代码:

ParameterizedType parameterized = (ParameterizedType)class;
Type type = $Gson$Types.canonicalize(parameterized.getActualTypeArguments()[0]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值