Java Language Il diamante


Esempio

Java SE 7

Java 7 ha introdotto il Diamond 1 per rimuovere alcuni piatti della caldaia attorno all'istanziazione di classe generica. Con Java 7+ puoi scrivere:

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

Dove dovevi scrivere nelle versioni precedenti, questo:

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

Una limitazione è per le classi anonime , in cui è comunque necessario fornire il parametro type nell'istanza:

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

Sebbene l'uso del diamante con le classi interne anonime non sia supportato in Java 7 e 8, verrà incluso come una nuova funzionalità in Java 9 .


Nota:

1 - Alcune persone chiamano <> uso di " operatore diamante". Questo non è corretto Il diamante non si comporta come un operatore e non è descritto o elencato in nessuna parte del JLS o dei tutorial Java (ufficiali) come operatore. Infatti, <> non è nemmeno un token Java distinto. Piuttosto si tratta di un < pedina seguito da un > Token, ed è legale (anche se cattivo stile) di avere spazi bianchi o commenti tra i due. Il JLS e i Tutorials si riferiscono costantemente a <> come "il diamante", e questo è quindi il termine corretto per esso.