に延び、最後の行(list1.addAll(list2);
は)のaddAll方法List.addAllを使用してリストを追加するコンパイル時エラー<? BaseClassの>このコードでは別の
コンパイル時エラーを生成する(コレクション<は?キャプチャ#3の?BaseClassのを拡張を拡張>)でタイプリスト<キャプチャ#3?
BaseClassの>(>一覧<キャプチャ#4-の?BaseClassのを拡張)の引数には適用されません拡張し、私はこれが許可された場合には、異なるクラスの同じリストインスタンスに追加することが可能であることを認識しません。しかし、私はこれについて正しい道が何かを知りません。
私のgetList()
メソッドはサブクラスBaseClass
を返す必要がありますが、その要件を変更することはできません。
私は同じ方法で宣言され、同じ種類のオブジェクトを含むこれらの2つのリストを持っています。もう1つを追加する必要があります。 これについてのご意見はありがとうございます。
BaseClass.java:
package main;
public class BaseClass {}
Main.java:
package main;
import java.util.ArrayList;
import java.util.List;
public class Main {
private static List<? extends BaseClass> getList() {
return new ArrayList<>();
}
public static void main(String[] args) {
List<? extends BaseClass> list1 = getList();
List<? extends BaseClass> list2 = getList();
list1.addAll(list2); // Compile-time error: "The method addAll(Collection<? extends capture#3-of ? extends BaseClass>) in the type List<capture#3-of ? extends BaseClass> is not applicable for the arguments (List<capture#4-of ? extends BaseClass>)".
}
}
'List list1'は、' List <? 'のように 'BaseClass'に基づくオブジェクトのリストを宣言するのが良い点です。 extends BaseClass> list1'は拡張します。しかし、 'getList()'の戻り値の型を変更することはできません。なぜなら、他のどこかでそれをオーバーライドし、 'BaseClass'の異なるサブクラスのリストを返さなければならないからです。 – SantiBailors