Language Principiante

El operador diamond ahora también funciona con clases 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) {..}
    };
¿Ves un problema con este código? Cuéntanos.
📏

Reglas consistentes

Diamond funciona en todas partes: constructores y clases anónimas por igual.

🧹

Menos redundancia

Los argumentos de tipo se declaran una vez a la izquierda, sin repetirlos.

🔧

Principio DRY

El compilador ya conoce el tipo — ¿para qué escribirlo dos veces?

Enfoque Antiguo
Repetir argumentos de tipo
Enfoque Moderno
Diamond <>
Desde JDK
9
Dificultad
Principiante
Operador diamond con clases anónimas
Disponible

Diamond con clases anónimas desde JDK 9 (sept. 2017).

Java 7 introdujo <> pero no funcionaba con clases internas anónimas. Java 9 corrigió esto, de modo que nunca necesitas repetir los argumentos de tipo en el lado derecho.

Compartir 𝕏 🦋 in