Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java Diamond Operator: Generics in Java 7+ vereinfachen

Java Diamond Operator

Der Diamond Operator wurde in Java 7 eingeführt, um Code bei Generics lesbarer zu machen. Ein Generic ist ein Typargument. Mit Generics können wir beliebige Objekte an Klassenmethoden übergeben. Beispiel: Vor Java 7 musste man zum Instanziieren einer String-Liste mit ArrayList folgende Syntax verwenden:

 List<String> listOfStrings = new ArrayList<String>(); 

Ab Java 7 lässt sich die Syntax mit dem Diamond Operator vereinfachen:

 List<String> listOfStrings = new ArrayList<>(); 

Vor Java 9 konnte er jedoch nicht mit anonymen inneren Klassen verwendet werden. Beispielsweise ließ sich der Objekttyp im Diamond Operator in folgender Syntax vor Java 9 nicht weglassen:

 Handler<Integer> intHandler = new Handler<Integer>(1) { @Override public void handle() { System.out.println(content); } }; 

Diamond Operator in anonymen Klassen

In Java 9 kann der Diamond Operator auch mit anonymen Klassen verwendet werden, um Code zu vereinfachen und Lesbarkeit zu verbessern.

 Handler<Integer> intHandler = new Handler<>(1) { @Override public void handle() { System.out.println(content); } }; 

Diamond Operator in Java 7, Java 8

Im folgenden Beispiel erstellen wir anonyme Klassen für eine abstrakte Klasse Handler, die ein generisches Argument akzeptiert, und übergeben den Objekttyp beim Erstellen der anonymen Klasse, da der Typ übergeben werden muss, andernfalls kompiliert das Programm nicht.

Beispiel

 public class Tester { public static void main(String[] args) { // Anonyme Klasse für Wert 1 // Hier müssen Typargumente im Diamond Operator übergeben werden // vor Java 9, sonst Compiler-Fehler Handler<Integer> intHandler = new Handler<Integer>(1) { @Override public void handle() { System.out.println(content); } }; intHandler.handle(); // Anonyme Klasse für Wert 2 Handler<? extends Number> intHandler1 = new Handler<Number>(2) { @Override public void handle() { System.out.println(content); } }; intHandler1.handle(); Handler<?> handler = new Handler<Object>("test") { @Override public void handle() { System.out.println(content); } }; handler.handle(); } } abstract class Handler<T> { public T content; public Handler(T content) { this.content = content; } abstract void handle(); } 

Ausgabe

Kompilieren und Ausführen des obigen Programms erzeugt folgendes Ergebnis:

 1 2 Test 

Diamond Operator ab Java 9

Mit Java 9 können wir den <> Operator auch mit anonymen Klassen verwenden, wie unten gezeigt.

Beispiel

Im folgenden Beispiel erstellen wir anonyme Klassen für eine abstrakte Klasse Handler, die ein generisches Argument akzeptiert, jedoch ohne Objekttyp beim Erstellen der anonymen Klasse, da der Compiler den Typ selbst ableitet.

 public class Tester { public static void main(String[] args) { // Anonyme Klasse für Wert 1 // Hier müssen keine Typargumente im Diamond Operator übergeben werden // da Java 9 Compiler den Typ automatisch inferieren kann Handler<Integer> intHandler = new Handler<>(1) { @Override public void handle() { System.out.println(content); } }; intHandler.handle(); Handler<? extends Number> intHandler1 = new Handler<>(2) { @Override public void handle() { System.out.println(content); } }; intHandler1.handle(); Handler<?> handler = new Handler<>("test") { @Override public void handle() { System.out.println(content); } }; handler.handle(); } } abstract class Handler<T> { public T content; public Handler(T content) { this.content = content; } abstract void handle(); } 

Ausgabe

Kompilieren und Ausführen des obigen Programms erzeugt folgendes Ergebnis:

 1 2 Test 

Java

  1. Java NavigableSet Interface meistern: Navigation, Sortierung und praktische Beispiele
  2. Java Modifikatoren erklärt: Typen, Verwendung und Best Practices
  3. Java Strings meistern: Erstellung, Methoden und Best Practices
  4. Java Map-Interface – Umfassender Leitfaden zu Map, Implementierungen und Schlüsselmethoden
  5. Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
  6. Java FileOutputStream Klasse – Umfassender Leitfaden
  7. Java 8: Die robuste neue Date/Time-API
  8. Insertion Sort Algorithmus in Java: Klares Beispiel & Schritt-für-Schritt-Anleitung
  9. Java verschachtelte und innere Klassen meistern: Typen, Beispiele und Best Practices
  10. Java 9 Multi-Resolution Image API: Responsive Grafiken mit mehreren Auflösungen