Skip to content

Lambda 表达式

TIP

Lambda 表达式是 Java 8 引入的函数式编程特性,可以简化匿名内部类的写法,让代码更加简洁。

基本语法

java
// 语法: (参数) -> { 方法体 }

// 无参数
Runnable task = () -> System.out.println("执行任务");

// 单参数
Consumer<String> printer = s -> System.out.println(s);

// 多参数
Comparator<Integer> comp = (a, b) -> a - b;

函数式接口

Java 8 提供了几个核心函数式接口:

接口参数返回值用途
PredicateTboolean条件判断
ConsumerTvoid消费数据
FunctionTR转换数据
SupplierT生产数据

与传统方式的对比

java
// 传统匿名内部类
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("按钮被点击");
    }
});

// Lambda 简化
button.addActionListener(e -> System.out.println("按钮被点击"));

方法引用

java
List<String> names = Arrays.asList("张三", "李四", "王五");

// Lambda
names.forEach(name -> System.out.println(name));

// 方法引用(更简洁)
names.forEach(System.out::println);

// 静态方法引用
names.sort(String::compareToIgnoreCase);

实际应用示例

java
List<Order> orders = getOrders();

// 过滤、排序、提取
List<String> result = orders.stream()
    .filter(o -> o.getAmount() > 1000)
    .sorted(Comparator.comparing(Order::getAmount).reversed())
    .map(Order::getOrderNo)
    .collect(Collectors.toList());

TIP

Lambda 表达式本质上是函数式接口的匿名实现,编译器通过类型推断确定具体类型。