Java 9 Operador Diamante (Diamond Operator)
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 TestOtras extensiones
Java 9 Nuevas características