如何创建和调用Java中的匿名函数
在Java中,匿名函数也称为Lambda表达式。Lambda表达式是一种轻量级、简洁的语法,可以用于替代具有单个抽象方法的接口类型的实例化。它可以实现接口中的某个方法,这样就可以使用Lambda表达式替代实现该接口的具体类。
创建Lambda表达式
创建Lambda表达式的语法如下:
(parameters) -> expression/ block of statements
其中,parameters为方法的参数,可以是0个或多个。expression或block of statements为方法体,采用箭头(->)将方法参数列表和方法体隔开。
Lambda表达式可以是一个简单的表达式,也可以是一个代码块。当Lambda表达式只有一个简单表达式时,可以省略花括号和return语句。例如:
// Lambda表达式写法
(x, y) -> x + y
// 等价的匿名内部类写法
new Calculate() {
public int sum(int x, int y) {
return x + y;
}
}
当Lambda表达式需要多个语句时,需要使用代码块的形式。例如:
(x, y) -> {
int temp = x + y;
x = y;
y = temp;
System.out.println("x=" + x + ", y=" + y);
return temp;
}
调用Lambda表达式
Lambda表达式可以直接当做函数式接口的实例来使用。函数式接口是只有一个抽象方法的接口,用于Lambda表达式的赋值和类型转换。例如:
interface MyFunInterface{
public int sum(int x, int y);
}
// Lambda表达式的调用
MyFunInterface sum = (x, y) -> x + y;
System.out.println(sum.sum(2, 3));
运行结果为 "5"。
Lambda表达式可以解决Java中的一个重要问题——多重线程处理,这是一种难以理解和编写的代码。Lambda表达式可帮助简化代码,并提高代码的可读性和可维护性。
需要注意的是,Lambda表达式在Java 8以上版本才支持。Lambda表达式和匿名函数的执行效率相当,但Lambda表达式的代码行更加简洁、清晰易读。
