Java 9 - Operador de diamante de clase interna
El operador Diamond se introdujo en Java 7 para hacer que el código fuera más legible, pero no se podía usar con clases internas anónimas. En Java 9, también se puede usar con la clase anónima para simplificar el código y mejorar la legibilidad. Considere el siguiente código anterior a Java 9.
Probador.java
Demostración en vivopublic 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(); }
Salida
1 2 Test
Con Java 9, podemos usar el operador <> con clase anónima como se muestra a continuación.
Probador.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(); }
Salida
1 2 Test
Java