Was ist ein Diamant-Operator (diamond operator)?v.7.0
Als Beispiel dient eine ArrayList
, die HashMap
-Objekte
speichert, die wiederum Strings mit Point
-Objekten
verbindet. Die Schreibweise bis Java 6 hatte bei der Deklaration
wie folgt zu erfolgen:
List<HashMap<String, Point>> list = new ArrayList<HashMap<String, Point>>();
Die neue Schreibweise bei Nutzung des Diamant-Operators sieht folgendermaßen aus:
List<HashMap<String, Point>> list = new ArrayList<>();
Der Diamant-Operator, so genannt wegen des Aussehens der beiden
leeren spitzen Klammern, ersetzt hier bei der Deklaration der
Liste den Typparameter HashMap<String, Point>
.
Dies ist durch die sog. type inference möglich,
bei der der Compiler den Typ aus dem Zusammenhang ableitet. Dies
ist aber auch zwingend erforderlich. Zudem sollte darauf
geachtet werden, dass die Lesbarkeit des Codes nicht
unnötig leidet.
Darüber hinaus unterliegt der
Einsatz des Diamant-Operators jedoch einigen Ausschlussregeln:
- Er kann nicht auf der linken Seite der Variablendeklaration
eingesetzt werden, da der Zusammenhang zum Ermitteln des
Typs erst hergestellt werden muss.
List<> list = new ArrayList<>(); // Compilerfehler
- Er darf nicht bei der Deklaration anonymer Klassen
Verwendung finden. Diese Regel wurde jedoch ab Java 9
fallengelassen.
Callable<String> callable = new Callable<>() { // ab Java 9 möglich public String call() { return "Hallo Welt!"; } };
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.