有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java指定使用T的类

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

我想作为参数传递的类也使用T。它被声明为public class MyObject<T>,并且有一个成员被声明为public T mMyVar;。然后,我有两个类有时用于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选择第二个参数并说,“不能从参数化类型中选择。”


共 (2) 个答案

  1. # 1 楼答案

    我确实从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());
    
  2. # 2 楼答案

    我在改装时遇到了同样的问题,这是我的解决方案-

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

    我想你也有同样的问题,希望我的解决方案能帮助你:)