Lambda表达式是Java 8引入的一个重要特性,它提供了一种简洁、清晰、灵活的语法,用于更方便地表示匿名函数(函数式接口的实例)。Lambda表达式的主要用途是简化使用函数式接口的代码,以更紧凑的形式表示行为参数化。
以下是Lambda表达式的基本语法:
(parameters) -> expression
或者
(parameters) -> { statements; }
Lambda表达式的核心是箭头 ->,左侧是参数列表,右侧是表达式或代码块。
Lambda表达式的特点:
1.匿名函数: Lambda表达式可以看作是匿名函数,它没有名称。
2.参数列表: Lambda表达式的参数列表可以省略类型,编译器会根据上下文推断参数类型。
3.箭头操作符: Lambda表达式使用箭头 -> 来连接参数列表和表达式/代码块。
4.可选的类型声明: 参数的类型可以省略,编译器会根据上下文自动推断。
5.可选的大括号: 如果表达式只有一行,大括号 {} 可以省略;如果有多行,大括号是必须的。
Lambda表达式的使用场景:
Lambda表达式通常用于函数式接口(Functional Interface)的实例化,函数式接口是只包含一个抽象方法的接口。Lambda表达式可以替代使用匿名内部类的方式创建函数式接口的实例。
// 使用匿名内部类
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello from anonymous class!");
}
};
// 使用Lambda表达式
Runnable runnable2 = () -> System.out.println("Hello from Lambda!");
// 在函数式接口中使用Lambda表达式
@FunctionalInterface
interface MyFunction {
void myMethod(String s);
}
// Lambda表达式作为函数式接口的实例
MyFunction myFunction = s -> System.out.println("Hello " + s);
Lambda表达式的引入使得编写函数式代码变得更为简洁和可读,特别是在处理集合、并行编程以及函数式编程范式的情境下。