# 本质 匿名内部类的简写方式 # 对象创建和垃圾回收 每个 Lambda 表达式都会创建一个实现函数接口的对象。频繁使用 Lambda 表达式可能导致大量对象的创建和销毁,从而增加垃圾回收的压力。这在高性能场景下可能成为一个性能瓶颈,因此在性能敏感的代码中应谨慎使用。 >[!最佳实践] - **避免不必要的闭包使用**:尽量减少捕获外部变量的数量。 - **使用并行流**:在处理集合时,可以使用并行流来提高性能。 - **减少对象创建**:在性能敏感的代码路径中,考虑使用传统的循环或方法调用来替代 Lambda 表达式 # Notes Lambda 表达式详解 1. 完整的 Lambda 语法 ```java // 完整写法 StreamingResponseBody responseBody = (OutputStream outputStream) -> { // 方法体 }; // 简化写法(类型推断) StreamingResponseBody responseBody = outputStream -> { // 方法体 }; ``` 2. 等价于传统的[[匿名内部类]] ```java // Lambda 表达式 StreamingResponseBody responseBody = outputStream -> { processMessageWithCallback(request.getMessage(), new EventCallback() { // ... }); }; // 等价的匿名内部类 StreamingResponseBody responseBody = new StreamingResponseBody() { @Override public void writeTo(OutputStream outputStream) throws IOException { processMessageWithCallback(request.getMessage(), new EventCallback() { // ... }); } }; ```