Language 入门

菱形运算符现在也适用于匿名类。

✕ Java 7/8
Map<String, List<String>> map =
    new HashMap<String, List<String>>();
// anonymous class: no diamond
Predicate<String> p =
    new Predicate<String>() {
        public boolean test(String s) {..}
    };
✓ Java 9+
Map<String, List<String>> map =
    new HashMap<>();
// Java 9: diamond with anonymous classes
Predicate<String> p =
    new Predicate<>() {
        public boolean test(String s) {..}
    };
发现此代码有问题? 告诉我们。
📏

一致的规则

菱形运算符无处不在——构造函数和匿名类均适用。

🧹

减少冗余

类型参数在左侧声明一次,不再重复。

🔧

DRY 原则

编译器已经知道类型——为什么要写两遍?

旧方式
重复类型参数
现代方式
菱形运算符 <>
自 JDK
9
难度
入门
匿名类的菱形运算符
可用

匿名类的菱形运算符自 JDK 9 起可用(2017 年 9 月)。

Java 7 引入了 <> 但不适用于匿名内部类。Java 9 解除了这一限制,使菱形运算符可以在任何地方使用。

分享 𝕏 🦋 in