Lambda表达式基本上表示功能接口的实例(具有单个抽象方法的接口称为功能接口。例如java.lang.Runnable)。lambda表达式实现唯一的抽象函数,因此实现了功能接口
lambda表达式在Java 8中添加,并提供以下功能。
允许将功能视为方法参数,或将代码视为数据。
可以在不属于任何类的情况下创建的函数。
lambda表达式可以像传递对象一样传递,并按需执行。
// Java program to demonstrate lambda expressions
// to implement a user defined functional interface.
// A sample functional interface (An interface with
// single abstract method
interface FuncInterface
{
// An abstract function
void abstractFun(int x);
// A non-abstract (or default) function
default void normalFun()
{
System.out.println("Hello");
}
}
class Test
{
public static void main(String args[])
{
// lambda expression to implement above
// functional interface. This interface
// by default implements abstractFun()
FuncInterface fobj = (int x)->System.out.println(2*x);
// This calls above lambda expression and prints 10.
fobj.abstractFun(5);
}
}
输出:
10
句法:
lambda运算符 - >正文
lambda运算符可以是:
- 零参数:
() - > System.out.println(“零参数lambda”);
- 一个参数: -
(p) - > System.out.println(“一个参数:”+ p);
如果可以从上下文推断出该变量的类型,则不必使用括号
- 多个参数:
(p1,p2) - > System.out.println(“多个参数:”+ p1 +“,”+ p2);
重点:
lambda表达式的主体可以包含零个,一个或多个语句。
当存在单个语句时,大括号不是必需的,并且匿名函数的返回类型与正文表达式的返回类型相同。
如果有多个语句,则必须用大括号(代码块)括起来,并且匿名函数的返回类型与代码块中返回的值的类型相同,如果没有返回任何内容,则返回void 。