Java Language El diamante


Ejemplo

Java SE 7

Java 7 introdujo el Diamond 1 para eliminar algunas placas de calderas en torno a la creación de instancias de clase genérica. Con Java 7+ puedes escribir:

List<String> list = new LinkedList<>();

Donde tenías que escribir en versiones anteriores, esto:

List<String> list = new LinkedList<String>();

Una limitación es para las clases anónimas , donde aún debe proporcionar el parámetro de tipo en la creación de instancias:

// This will compile:

Comparator<String> caseInsensitiveComparator = new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareToIgnoreCase(s2);
    }
};

// But this will not:

Comparator<String> caseInsensitiveComparator = new Comparator<>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareToIgnoreCase(s2);
    }
};
Java SE 8

Aunque el uso de Diamond con Anonymous Inner Classes no es compatible con Java 7 y 8, se incluirá como una nueva función en Java 9 .


Nota:

1 - Algunas personas llaman al uso <> el " operador de diamante". Esto es incorrecto. El diamante no se comporta como un operador, y no se describe ni se enumera en ningún lugar en el JLS o en los Tutoriales de Java (oficiales) como operador. De hecho, <> ni siquiera es un token de Java distinto. Más bien, es un < token seguido de un > token, y es legal (aunque mal estilo) tener espacios en blanco o comentarios entre los dos. El JLS y los Tutoriales se refieren constantemente a <> como "el diamante", y ese es el término correcto para ello.