Jos*_*osh 7 java generics types class
我正在尝试编写一个通用的方法来将json反序列化到我的模型中.我的问题是我不知道如何从泛型类型T获取类.我的代码看起来像这样(并且不以这种方式编译)
public class JsonHelper {
public <T> T Deserialize(String json)
{
Gson gson = new Gson();
return gson.fromJson(json, Class<T>);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了其他的东西,以获得类型,但它抛出了我的课程JsonHelper<T>,然后尝试了这个错误
Class<T> persistentClass = (Class<T>) ((ParameterizedType)getClass()
.getGenericSuperclass())
.getActualTypeArguments()[0];
Run Code Online (Sandbox Code Playgroud)
方法签名如下所示
com.google.gson.Gson.fromJson(String json, Class<T> classOfT)
Run Code Online (Sandbox Code Playgroud)
那么,我怎样才能沿着T转换,以便在我调用时JsonHelper.Deserialize<MyObject>(json);获得正确对象的实例?
eri*_*son 13
你需要Class从某个地方获得一个实例.也就是说,您的Deserialize()方法需要将a Class<T>作为参数,就像底层fromJson()方法一样.
您的方法签名应该看起来像Gson的:
<T> T Deserialize(String json, Class<T> type) ...
Run Code Online (Sandbox Code Playgroud)
您的电话将如下所示:
MyObject obj = helper.Deserialize(json, MyObject.class);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在Java中很好地建立了用小写字母开始方法名称的约定.
| 归档时间: |
|
| 查看次数: |
5314 次 |
| 最近记录: |