指定使用T的类

时间:2016-06-21 14:07:53

标签: java android

我使用的方法采用Class<T>作为参数。

我想要作为参数传递的类也使用T.它被声明为public class MyObject<T>并且有一个声明为public T mMyVar;的成员然后我有2个类我有时用于mMyVar名为MyVarObject1MyVarObject2

示例:

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;

2 个答案:

答案 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());