Java 9 Operador Diamante (Diamond Operator)

Java 9 新特性Java 9 Nuevas características

El operador diamante se introdujo en Java 7, puede hacer que el código sea más legible, pero no se puede utilizar en clases internas anónimas.

En Java 9, se puede usar junto con clases internas anónimas, mejorando así la legibilidad del código.

Considere el siguiente código anterior a Java 9:

Ejemplo

public 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(); }

El resultado de la ejecución es:

1
2
Test

En Java 9, podemos usar el operador <> en clases anónimas, como se muestra a continuación:

Ejemplo

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(); }

El resultado de la ejecución es:

1
2
Test

Java 9 新特性Java 9 Nuevas características

Otras extensiones