In diesem Code erzeugt die letzte Zeile (list1.addAll(list2);
) Fehler Die Kompilierung-Fehler bei der Kompilierung mit List.addAll zum Hinzufügen einer Liste <? erstreckt Baseclass> zu einem anderen
Die Methode addAll (Sammlung <? erstreckt capture # 3-of? erstreckt Baseclass>) in der Typ Liste < erfassen # 3-von? erstreckt Baseclass> ist nicht anwendbar für die Argumente (List < Capture # 4-of? erweitert Baseclass>)
ich erkennen, dass dies, wenn durfte es möglich wäre, auf die gleiche Liste Instanzen verschiedener Klassen hinzufügen . Ich weiß jedoch nicht, was der richtige Weg ist.
Meine getList()
Methode muss Subklassen von BaseClass
zurückgeben, ich kann diese Anforderung nicht ändern.
Ich habe diese zwei Listen, auf die gleiche Weise deklariert und enthält die gleiche Art von Objekten, und ich muss eine in die andere hinzufügen. Irgendwelche Gedanken dazu würden geschätzt.
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>)".
}
}
Gut, dass 'List list1' eine Liste von Objekten deklariert, die auf' BaseClass' basieren, genau wie meine 'List erweitert BaseClass> list1' tut. Allerdings kann ich den Rückgabetyp von 'getList()' nicht ändern, da ich ihn irgendwo anders überschreiben muss und eine Liste von verschiedenen Unterklassen von 'BaseClass' zurückgeben muss. –
SantiBailors