Ich habe meinen Kopf gegen diesen eine Weile geschlagen und dachte, dass vielleicht einige frische Augen das Problem sehen werden; vielen Dank für Ihre Zeit.Java Generics Puzzler, Erweiterung einer Klasse und Verwendung von Platzhaltern
import java.util.*;
class Tbin<T> extends ArrayList<T> {}
class TbinList<T> extends ArrayList<Tbin<T>> {}
class Base {}
class Derived extends Base {}
public class Test {
public static void main(String[] args) {
ArrayList<Tbin<? extends Base>> test = new ArrayList<>();
test.add(new Tbin<Derived>());
TbinList<? extends Base> test2 = new TbinList<>();
test2.add(new Tbin<Derived>());
}
}
Mit Java 8. Es mir in test
wie die direkten Erzeugung des Behälters sieht entsprechen den Behälter in test2
, aber der Compiler sagt:
Test.java:15: error: no suitable method found for add(Tbin<Derived>)
test2.add(new Tbin<Derived>());
^
Wie schreibe ich Tbin
und TbinList
so die letzte Zeile ist akzeptabel?
Beachten Sie, dass ich tatsächlich getippt Tbin
s hinzufügen werde, weshalb ich Tbin<Derived>
in der letzten Zeile angegeben habe.
In Eclipse ist die Fehlermeldung 'Die Methode hinzufügen (Tbin) im Typ ArrayList > gilt nicht für die Argumente (Tbin ) '. –
dimo414
Versuchen Sie diese 'ArrayList> test3 = new TbinList <>(); '. Sehr interessant in der Tat. –
Radiodef
@Radiodef Eclipse zeigt einen Fehler an, der besagt, dass "Argumente für TbinList <>" nicht abgeleitet werden können. – TNT