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>.classList.class. したがって、List.class のみを使用するか、このようなリストを既に返す 2 番目のメソッドを作成できます。

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

これによると: https://stackoverflow.com/a/2226038/1264582 回避策があります。ジェネリック クラスのサブクラスを使用するだけです。

于 2013-04-06T13:39:10.440 に答える
0

User.classパラメータとしてのみ使用

于 2013-04-06T13:33:29.407 に答える
-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 に答える