鑽石
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 始終將 <>
稱為鑽石,因此它是正確的術語。