Java 9 - Opérateur Diamond de classe interne
L'opérateur Diamond a été introduit dans Java 7 pour rendre le code plus lisible, mais il ne pouvait pas être utilisé avec les classes internes anonymes. Dans Java 9, il peut également être utilisé avec une classe anonyme pour simplifier le code et améliorer la lisibilité. Considérez le code suivant antérieur à Java 9.
Testeur.java
Démo en directpublic class Tester { public static void main(String[] args) { Handler<Integer> intHandler = new Handler<Integer>(1) { @Override public void handle() { System.out.println(content); } }; intHandler.handle(); 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(); }
Sortie
1 2 Test
Avec Java 9, nous pouvons utiliser l'opérateur <> avec une classe anonyme, comme indiqué ci-dessous.
Testeur.java
public class Tester { public static void main(String[] args) { 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(); }
Sortie
1 2 Test
Java