用简洁的 lambda 和方法引用替代单方法匿名类。
代码对比
✕ Anonymous class
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
save(event);
}
});
✓ Java 8+
button.addActionListener(this::save);
发现此代码有问题? 告诉我们。
为什么现代方式更好
更少样板代码
省去类声明和方法重写的繁琐形式。
可读性更好
让注意力集中在所执行的操作上。
仍然类型安全
编译器会检查目标函数式接口的签名。
旧方式
匿名类
现代方式
方法引用
自 JDK
8
难度
入门
JDK 支持
从匿名类迁移到 lambda 和方法引用
可用
自 JDK 8 起可用(2014 年 3 月)。
工作原理
函数式接口可以通过 lambda 或方法引用实现。这样既消除了匿名类的繁琐样板,又保留了静态类型检查和相同的回调契约。
相关文档
证明