【发布时间】:2023-04-01 18:01:01
【问题描述】:
我正在尝试编写一个将 json 反序列化到我的模型中的通用方法。我的问题是我不知道如何从泛型类型 T 中获取 Class。我的代码看起来像这样(并且不以这种方式编译)
public class JsonHelper {
public <T> T Deserialize(String json)
{
Gson gson = new Gson();
return gson.fromJson(json, Class<T>);
}
}
我尝试了其他方法来获取类型,但它抛出了一个错误我将类设置为JsonHelper<T> 然后尝试了这个
Class<T> persistentClass = (Class<T>) ((ParameterizedType)getClass()
.getGenericSuperclass())
.getActualTypeArguments()[0];
方法签名是这样的
com.google.gson.Gson.fromJson(String json, Class<T> classOfT)
那么,如何沿 T 进行翻译,以便在调用 JsonHelper.Deserialize<MyObject>(json); 时获得正确对象的实例?
【问题讨论】:
-
我不确定这是否可能。如果是,为什么 GSon 类不直接执行并远程调用 Class
参数? -
乔希,我搜索并回答了同样的问题,但从未找到。我最终做了以下两个答案的建议。