Java 9 : Opérateur diamant (<>) avec classes anonymes
L'opérateur diamant <> (Java 7) simplifie l'instanciation générique mais n'était pas utilisable avec les classes anonymes. Java 9 lève cette restriction.
Avant Java 9 : type explicite requis
Handler<Integer> intHandler = new Handler<Integer>(1) { ... };
Handler<? extends Number> intHandler1 = new Handler<Number>(2) { ... };
Handler<?> handler = new Handler<Object>("test") { ... };
Java 9+ : diamant autorisé
Handler<Integer> intHandler = new Handler<>(1) { ... };
Handler<? extends Number> intHandler1 = new Handler<>(2) { ... };
Handler<?> handler = new Handler<>("test") { ... };
Code complet
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
Amélioration purement syntaxique qui réduit la verbosité et améliore la lisibilité avec les types génériques complexes dans les classes anonymes.
Java
- Comprendre le mot-clé final en Java : variables, méthodes et classes
- L'opérateur instanceof en Java : guide complet
- Maîtriser les classes imbriquées et internes en Java : types, exemples et bonnes pratiques
- Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
- Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
- Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
- Maîtriser les génériques Java : Construire du code réutilisable et type-safe