簡體   English   中英

指定使用T的類

[英]Specifying a class that uses T

我正在使用一個以Class<T>作為參數的方法。

我想要作為參數傳遞的類也使用T.它被聲明為public class MyObject<T>並且具有聲明為public T mMyVar;的成員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選擇第二個參數並說“無法從參數化類型中選擇”。

使用改裝時遇到了同樣的問題,這是我的解決方案 -

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

我想你有同樣的問題,希望我的解決方案能幫助你:)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM