Language Iniciante

O operador diamond agora funciona também com classes anônimas.

✕ 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) {..}
    };
Viu um problema com este código? Nos avise.
📏

Regras consistentes

O diamond funciona em todos os lugares — construtores e classes anônimas.

🧹

Menos redundância

Argumentos de tipo são declarados uma vez à esquerda, nunca repetidos.

🔧

Princípio DRY

O compilador já sabe o tipo — por que escrevê-lo duas vezes?

Abordagem Antiga
Repetir argumentos de tipo
Abordagem Moderna
Diamond <>
Desde o JDK
9
Dificuldade
Iniciante
Diamond com classes anônimas
Disponível

Diamond com classes anônimas desde o JDK 9 (set 2017).

O Java 7 introduziu o <>, mas ele não funcionava com classes internas anônimas. O Java 9 corrigiu isso, então você nunca mais precisa repetir argumentos de tipo no lado direito.

Compartilhar 𝕏 🦋 in