Diamond con classi anonime
L'operatore diamond ora funziona anche con le classi anonime.
Confronto Codice
✕ 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) {..}
};
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Regole coerenti
Diamond funziona ovunque — costruttori e classi anonime allo stesso modo.
Meno ridondanza
Gli argomenti di tipo sono indicati una volta a sinistra, mai ripetuti.
Principio DRY
Il compilatore conosce già il tipo — perché scriverlo due volte?
Approccio Vecchio
Ripeti gli argomenti di tipo
Approccio Moderno
Diamond <>
Dal JDK
9
Difficoltà
Principiante
Supporto JDK
Diamond con classi anonime
Disponibile
Diamond con classi anonime dal JDK 9 (settembre 2017).
Come funziona
Java 7 ha introdotto <> ma non funzionava con le classi interne anonime. Java 9 ha corretto questo, quindi non è mai necessario ripetere gli argomenti di tipo sul lato destro.
Documentazione Correlata