Opérateur diamant de Java 9
L'opérateur diamant a été introduit dans Java 7, ce qui rend le code plus lisible, mais il ne peut pas être utilisé pour les classes internes anonymes.
Dans Java 9, il peut être utilisé avec des classes internes anonymes, ce qui améliore la lisibilité du code.
Considérez le code suivant avant Java 9 :
Exemple
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();
}
La sortie est :
1 2 Test
Dans Java 9, nous pouvons utiliser l'opérateur <> avec des classes anonymes, comme indiqué ci-dessous :
Exemple
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();
}
La sortie est :
1 2 TestAutres extensions
Nouveautés de Java 9