Lambda表达式本质上是一个匿名或未命名的方法。lambda表达式不能单独执行。相反,它用于实现功能接口定义的方法。
如何在Java中定义Lambda表达式?
(parameter list) -> lambda body
使用的新运算符(->)被称为箭头运算符或lambda运算符。让我们探索一些实例,
假设我们有一个这样的方法:
double getPiValue() {
return 3.1415;
}
我们可以使用lambda表达式编写此方法,如下所示:
() -> 3.1415
在此,该方法没有任何参数。因此,运算符的左侧包括一个空参数。右侧是lambda主体,用于指定lambda表达式的操作。在这种情况下,它将返回值3.1415
Lambda 主体的类型
在Java中,lambda主体有两种类型。
1.单个表达式主体
() -> System.out.println("Lambdas are great");
2.由代码块组成的主体
() -> {
double pi = 3.1415;
return pi;
};
让我们编写一个Java程序,该程序使用lambda表达式返回Pi的值。
如前所述,lambda表达式不是单独执行的。相反,它形成了由功能接口定义的抽象方法的实现。
因此,我们需要首先定义一个功能接口。
import java.lang.FunctionalInterface;
//这是功能接口
@FunctionalInterface
interface MyInterface{
// 抽象方法
double getPiValue();
}
public class Main {
public static void main( String[] args ) {
//声明对MyInterface的引用
MyInterface ref;
// lambda 表达式
ref = () -> 3.1415;
System.out.println("Pi = " + ref.getPiValue());
}
}
将lambda表达式与参数一起使用
@FunctionalInterface
interface MyInterface {
//抽象方法
String reverse(String n);
}
public class Main {
public static void main( String[] args ) {
//声明对MyInterface的引用
//将lambda表达式分配给引用
MyInterface ref = (str) -> {
String result = "";
for (int i = str.length()-1; i >= 0 ; i--){
result += str.charAt(i);
}
return result;
};
//调用接口的方法
System.out.println("Lambda reversed = " + ref.reverse("Lambda"));
}
}