2013-04-06 16 views
0

我有這樣的方法如何獲得類類型的通用列表?

public <T> T PostQuery(String url, Object graph, Class<T> returnType) 

,我想這樣稱呼它

List<User> users = PostQuery("blabla", SomeObj, List<User>.class); 

,但我得到的最後一個參數錯誤。它允許我只寫List.class,這使它成爲一個字符串列表,而不是我想要的。

我該怎麼做?

+0

在運行時,你只有'List',所以只需發送'List.class'作爲參數。 – 2013-04-06 13:30:56

回答

0

只使用User.class作爲參數

3

由於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

-1

第二個方法使用public <T> T PostQuery(String url, Object graph){}將是確定的,因爲你已經聲明瞭一個泛型類型,以這種方法時聲明<T>像:

public <T> T PostQuery(String url, Object graph){ 
    Object obj = null; 
    //... 
    return (T)obj; 
} 
+0

我在函數內部使用結果類型 – 2013-04-06 13:39:26