0

方法があります:

protected List<? extends Object> retrieveData(TypeReference<List<? extends Object>> ref)

私がそれを適用しようとすると:

return (List<SomeClass>) retrieveData(new TypeReference<List<SomeClass>>() {});

この通知を受け取ります

タイプAbstractJsonServiceのメソッドretrieveData(TypeReference<List<? extends Object>>)は、引数には適用できません(new TypeReference<List<SomeClass>>(){})

ここで何が問題なのかわかりません。助言がありますか?

4

2 に答える 2

3

たぶん、次のメソッドシグネチャで試すことができます。

protected <E> E retrieveData(TypeReference<E> ref)
于 2013-03-25T09:29:34.583 に答える
1

Not sure what's wrong here. Any suggestions?

タイプ<? extends Object>はメソッド本体で不明です。このタイプはのインスタンスであるList<SomeClass>かどうかは不明です。コンパイラーは確実に知ることができず、の戻りを防ぎList<SomeClass>ます。

を使用するprotected <T> T retrieveData(TypeReference<T> ref)場合、Tの「固定」型があり、コンパイラは、返される型がの型と同じであることを確認しTypeReferenceます。これに加えて、コンパイラはList<SomeClass>メソッドを呼び出すときにタイプTを推測することができます: 、キャストretrieveData(new TypeReference<List<SomeClass>>)を行う必要はもうありません。List<SomeClass>

于 2013-03-25T09:44:49.997 に答える