私は次のクラスを持っています
public class Animal
public class Dog extends Animal
public class Cat extends Animal
そしてテストのために、私はドライバークラスを持っています。
public class Driver {
public static void main(String[] args){
List<? extends Animal> animalList = Arrays.<Dog>asList(new Dog(), new Dog(), new Dog());
animalList.add(new Dog()) // Compilation error
}
}
デフォルトではリストは不変型コンテナです。たとえばList<Object> objectList
、ArrayList<String> stringList
stringList を objList に置き換えることはできません。これはコンパイルエラーを引き起こします
私の試みは、Driver クラスのようにリストを共変にすることです。
に従って、<? extends Animal>
Animal タイプを含む Animal のサブタイプである任意のオブジェクトを適用できます。
しかし、指定された行でコンパイルの問題が発生しています。誰かが私が間違った場所を理論的に説明できますか.