lambda 表达式作为匿名内部类的替代方案,提供了更简洁的方式来定义函数式接口的实现:使用简短语法(parameters) -> expression 定义匿名函数。适用于需要实现函数式接口(只有一个抽象方法)的场合。能够简化列表排序和线程定义等任务。

Lambda 表达式
作为匿名内部类的替代方案,Java 8 引入了 lambda 表达式。lambda 表达式是一种轻量级的匿名函数,可以在不声明类的情况下定义和使用。
语法:
立即学习“Java免费学习笔记(深入)”;
(parameters) -> expression
例如,以下代码使用匿名内部类为按钮添加监听器:
Button button = new Button();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 实现事件处理代码
}
});使用 lambda 表达式可以简化为:
Button button = new Button();
button.addActionListener(e -> {
// 实现事件处理代码
});函数式接口
lambda 表达式只能用于实现函数式接口,即只包含一个抽象方法的接口。Java 中提供了几个内置的函数式接口,例如 Runnable、Callable 和 Comparator。
实战案例
使用 lambda 表达式对列表进行排序:
Listnames = Arrays.asList("John", "Mary", "Bob"); // 使用匿名内部类 Collections.sort(names, new Comparator () { @Override public int compare(String o1, String o2) { return o1.compareToIgnoreCase(o2); } }); // 使用 lambda 表达式 Collections.sort(names, (o1, o2) -> o1.compareToIgnoreCase(o2));
使用函数式接口定义线程:
// 使用匿名内部类
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 线程逻辑
}
});
// 使用 lambda 表达式
Thread thread = new Thread(() -> {
// 线程逻辑
});结论
lambda 表达式提供了比匿名内部类更简洁、更优雅的方式来编写代码。它们简化了函数式接口的使用,并提高了代码的可读性和可维护性。











