我有這樣的方法如何獲得類類型的通用列表?
public <T> T PostQuery(String url, Object graph, Class<T> returnType)
,我想這樣稱呼它
List<User> users = PostQuery("blabla", SomeObj, List<User>.class);
,但我得到的最後一個參數錯誤。它允許我只寫List.class
,這使它成爲一個字符串列表,而不是我想要的。
我該怎麼做?
我有這樣的方法如何獲得類類型的通用列表?
public <T> T PostQuery(String url, Object graph, Class<T> returnType)
,我想這樣稱呼它
List<User> users = PostQuery("blabla", SomeObj, List<User>.class);
,但我得到的最後一個參數錯誤。它允許我只寫List.class
,這使它成爲一個字符串列表,而不是我想要的。
我該怎麼做?
只使用User.class
作爲參數
由於Java實現泛型(類型擦除)沒有List<User>.class
只有List.class
。因此,使用或者使用剛剛List.class或者你可以創建已返回這樣
public List<T> T PostQueryList(String url, Object graph, Class<T> returnType)
List<User> users = PostQueryList("blabla", SomeObj, User.class);
列表如果你真的需要訪問List<User>
你可能想看看TypeTokens番石榴https://code.google.com/p/guava-libraries/wiki/ReflectionExplained
第二個方法使用public <T> T PostQuery(String url, Object graph){}
將是確定的,因爲你已經聲明瞭一個泛型類型,以這種方法時聲明<T>
像:
public <T> T PostQuery(String url, Object graph){
Object obj = null;
//...
return (T)obj;
}
我在函數內部使用結果類型 – 2013-04-06 13:39:26
根據這個: https://stackoverflow.com/a/2226038/1264582 有一種解決方法。只需使用泛型類的子類。
在運行時,你只有'List',所以只需發送'List.class'作爲參數。 – 2013-04-06 13:30:56