Language Principiante

L'operatore diamond ora funziona anche con le classi anonime.

✕ 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.
📏

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
Diamond con classi anonime
Disponibile

Diamond con classi anonime dal JDK 9 (settembre 2017).

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.

Condividi 𝕏 🦋 in