Generics mit ? und Diamantoperator

Hallo,

die (ausführliche) Schreibweise
List<Object> list = new ArrayList<Object>();
kann mit dem Diamantoperator so verkürzt werden
List<Object> list = new ArrayList<>();


Mit dem Diamantoperator kann ich auch schreiben
List<?> list = new ArrayList<>();
aber warum kann ich das nicht in
List<?> list = new ArrayList<?>();
umwanderln?
 
Vereinfacht: da der Typ von Wildcards nicht bekannt ist, kannst Du auch keine Instanzen von Generics mit Wildcards erstellen.

Zwecks besserer Vorstellung:
Java:
class Generics<T> {
    T data;
}
Substituiert man nun gedanklich T durch einen angegebenen Typ, z. B. bei new Generics<String>, dann wird aus T data eben String data. Entsprechender Code
Java:
class Generics {
    String data;
}
wäre problemlos übersetzbar.

Setzt Du statt T ein ? ein, würde aus T data aber ? data werden. Da "?" kein Typ ist, dürfte es schnell einsichtig sein, dass das nicht funktionieren kann.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben