鑽石

Version >= Java SE 7

Java 7 引入了 Diamond 1 來刪除圍繞泛型類例項化的一些樣板。使用 Java 7+,你可以編寫:

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

你必須在以前的版本中寫的地方,這個:

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

一個限制是匿名類 ,你仍然必須在例項化中提供型別引數:

// 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);
    }
};

Version > Java SE 8

儘管在 Java 7 和 8 中不支援使用帶有匿名內部類的菱形, 但它將作為 Java 9 中的新功能包含在內

腳註:

1 - 有些人將 <> 用作“鑽石運算子 ”。這是不正確的。鑽石不像運算子那樣,並且不作為運算子在 JLS 或(官方)Java 教程中的任何地方描述或列出。實際上,<> 甚至不是一個獨特的 Java 令牌。相反,它是一個 < 令牌,後跟一個 > 令牌,並且在兩者之間有空格或評論是合法的(雖然樣式不好)。 JLS 和 Tutorials 始終將 <> 稱為鑽石,因此它是正確的術語。