我使用的方法采用Class<T>
作为参数。
我想要作为参数传递的类也使用T.它被声明为public class MyObject<T>
并且有一个声明为public T mMyVar;
的成员然后我有2个类我有时用于mMyVar
名为MyVarObject1
和MyVarObject2
。
示例:
private class MyObject<T> {
public T mMyVar;
}
private class MyVarObject1 {
// some variables
}
private class MyVarObject2 {
// some variables
}
具体来说,我调用的方法是JacksonUtil
方法fromJsonArray
。
我不确定这里的正确语法。 JacksonUtil
需要知道确切的模型结构,以便它可以解析json,但是我在查找这一行的正确语法时遇到了问题:
MyObject<MyVarObject1> result = JacksonUtil.fromJsonArray(jsonStr, MyObject<MyVarObject1>.class);
我所拥有的东西并不起作用。我的IDE选择第二个参数并说,&#34;无法从参数化类型中选择。&#34;
答案 0 :(得分:0)
使用改装时遇到了同样的问题,这是我的解决方案 -
public class ResponseDS<T> {
public int s;
public String e;
public T d;
}
如果你需要对象数组,那么
public class ResponseDSs<T> {
public int s;
public String e;
public T[] d;
}
以下是我如何使用它进行改造 -
Call<ResponseDS<UserDS>> userModelCall = ZivaUtils.getRetrofit().getUser();
我认为你有同样的问题,希望我的解决方案能帮到你:)。
答案 1 :(得分:0)
我从Gson做TypedToken
来解析自定义对象,我想你可以找到类似于与Jackson一起使用的东西,如果我后来找到了什么,我会编辑我的答案。
您可以使用TypeToken
将json字符串加载到自定义对象中。
Gson gson = new Gson();
//This is an example, you probably get this from your server as Json String
MyObject<MyObject1> user = new MyObject<MyObject1>();
String myObjectAsString = gson.toJson(user);
//then parse into your custom object
MyObject other = gson.fromJson(myObjectAsString, new TypeToken<MyObject<MyObject1>>(){}.getType());