0

我有这个方法

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

我想这样称呼它

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

但是我在最后一个参数上出错了。它只允许我写List.class,这使它成为一个字符串列表,而不是我想要的。

我怎样才能做到这一点?

4

4 回答 4

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

如果您真的需要访问,您可能需要查看来自 Guava https://code.google.com/p/guava-libraries/wiki/ReflectionExplainedList<User>的 TypeTokens

于 2013-04-06T13:35:58.447 回答
0

仅用User.class作参数

于 2013-04-06T13:33:29.407 回答
0

据此: https ://stackoverflow.com/a/2226038/1264582 有一种解决方法。只需使用泛型类的子类。

于 2013-04-06T13:39:10.440 回答
-1

可以使用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-06T13:38:53.377 回答