Java/Kotlin: Gson() 泛型转换,解决泛型参数的类型擦除

本文探讨了在Java和Kotlin中如何使用Gson进行泛型转换,尤其是在面临类型参数类型擦除问题时的解决方案。通过实例展示了在Kotlin中如何利用拓展函数解决编译期类型擦除导致的异常,从而实现更简洁的代码。
摘要由CSDN通过智能技术生成

有这么一个带类型参数的类,就叫S

你的目的是获取S里面的data这很关键


class S<T>(
    val data: T
    //.....省略其他成员变量
)

可以看成网络包,不解释了

Gson().fromJson()

函数声明如下

public <T> T fromJson(String json, Type typeOfT)
public <T> T fromJson(Reader json, Class<T> classOfT)

这里只谈第一个,假如现在要将一个S<String>Json转成对应的S(这里为了方便就用的String),那么正常来说需要如下的代码

val type = object: TypeToken<S<String>>(){
   }.type
val s = Gson().fromJson(sJson, type)

这就有一个问题,也不算是问题。就是你使用的S具有泛型参数,但是你jsonobj的时候还得去写TypeToken....一堆代码,如果要转的次数多就很烦,很多样板代码。

所以似乎可以这样

fun <T> jsonToT(sJson: String){
   
	val type = Object: TypeToken<S<T>>(){
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值