0

私は次の方法を持っています

public List<? extends FooInterface<X,Y>> getList()

メンバーとしてリストを持っているクラスでは:

List<FooImplementation> foolist = new ArrayList<>();

そして私は次のようなことをしようとしています:

public List<? extends FooInterface<X,Y>> getList(){
    return foolist;
}

しかし、それは機能しません。

エラーは次のとおりです。

Incompatible types. 
Required List<? extends FooInterface<X,Y>> 
Found List<FooImplementation>.

何が問題なのですか?また、foolistをextendsワイルドカードのリストにコピーしようとしましたが、それは愚か者の用事であることがわかりました。

4

1 に答える 1

0

遅れて申し訳ありませんが、解決策を投稿するためのリクエストを見ました。

したがって、基本的に私がしたことは、リストの型にジェネリック パラメーターを追加することでした。

それ以外の :

List<FooImplementation> foolist = new ArrayList<>();

私が使用した:

List<FooImplementation<X,Y>> foolist = new ArrayList<>();

FooImplementation次のようにクラスを宣言したため、これは機能しました。

class FooImplementation<X,Y> implements FooInterface<X,Y>{...}

そして今、すべてが完全に機能し、エラーはありません. 私の質問に回答/コメントする時間を割いてくれたアンに感謝します.

于 2013-01-27T02:39:28.583 に答える