Opérateur diamond avec les classes anonymes
L'opérateur diamond fonctionne maintenant aussi avec les classes anonymes.
Comparaison de Code
✕ Java 7/8
Map<String, List<String>> map =
new HashMap<String, List<String>>();
// anonymous class: no diamond
Predicate<String> p =
new Predicate<String>() {
public boolean test(String s) {..}
};
✓ Java 9+
Map<String, List<String>> map =
new HashMap<>();
// Java 9: diamond with anonymous classes
Predicate<String> p =
new Predicate<>() {
public boolean test(String s) {..}
};
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Règles cohérentes
Diamond fonctionne partout : constructeurs et classes anonymes de la même façon.
Moins de redondance
Les arguments de type sont déclarés une fois à gauche, sans les répéter.
Principe DRY
Le compilateur connaît déjà le type — pourquoi l'écrire deux fois ?
Ancienne Approche
Répéter les arguments de type
Approche Moderne
Diamond <>
Depuis JDK
9
Difficulté
Débutant
Support JDK
Opérateur diamond avec les classes anonymes
Disponible
Diamond avec classes anonymes depuis JDK 9 (sept. 2017).
Comment ça fonctionne
Java 7 a introduit <> mais cela ne fonctionnait pas avec les classes internes anonymes. Java 9 a corrigé cela, de sorte que vous n'avez jamais besoin de répéter les arguments de type côté droit.
Documentation Associée