[英]What's the practical difference between `class <T extends A> { }` and a `class { }` that uses A?
[英]Specifying a class that uses T
我正在使用一個以Class<T>
作為參數的方法。
我想要作為參數傳遞的類也使用T.它被聲明為public class MyObject<T>
並且具有聲明為public T mMyVar;
的成員public T mMyVar;
然后,我有兩個類,我有時用於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選擇第二個參數並說“無法從參數化類型中選擇”。
使用改裝時遇到了同樣的問題,這是我的解決方案 -
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.