Java Language Le diamant


Exemple

Java SE 7

Java 7 a introduit le Diamond 1 pour supprimer certaines plaques chauffantes autour de l'instanciation de classe générique. Avec Java 7+, vous pouvez écrire:

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

Où vous deviez écrire dans les versions précédentes, ceci:

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

L'une des limitations concerne les classes anonymes , dans lesquelles vous devez toujours fournir le paramètre type dans l'instanciation:

// 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

Bien que l'utilisation du diamant avec Anonymous Inner Classes ne soit pas prise en charge dans Java 7 et 8, il sera inclus en tant que nouvelle fonctionnalité dans Java 9 .


Note de bas de page:

1 - Certaines personnes appellent l’utilisation <> l’ opérateur diamantaire. Ceci est une erreur. Le diamant ne se comporte pas comme un opérateur et n'est ni décrit ni répertorié en tant qu'opérateur dans les tutoriels Java (officiels) ou JLS. En effet, <> n'est même pas un jeton Java distinct. C'est plutôt un jeton < suivi d'un jeton > , et il est légal (bien que de mauvais style) d'avoir des espaces ou des commentaires entre les deux. Le JLS et les tutoriels se réfèrent systématiquement à <> comme "le diamant", ce qui en fait le terme correct.