什么是Lambda表达式?
标准语法:
java
(参数,.....) -> {
//方法体代码
}
() : 代表的是一个方法
-> : 指向要做的事情
{ } : 功能代码(具体要做事情的代码)代表函数式接口的抽象方法
java
public class Test {
public static void main(String[] args) {
//方式1:
Swim swim = new Swim() {
//匿名内部类
@Override
public void swimming() {
System.out.println("swimming");
}
};
swim.swimming();//swimming
//方式2:
method(()->{
System.out.println("游泳。。。");
});//游泳。。。
}
public static void method(Swim swim) {
swim.swimming();
}
}
Lambda表达式的使用?
前置要求:仅针对函数式接口进行代码编写
函数式接口的特点:接口中仅有一个抽象方法(其他的允许有:静态方法、默认方法、私有方法)
java
@FunctionalInterface
//java针对函数式接口,制定了一个注解:@FunctionalInterface
public interface Comparator<T> {
.......
}
Lambda表达式在程序中解决什么问题?
简化程序中的匿名内部类代码书写
Lambda表达式的省略模式:
-
可以省略参数类型:要么全部省略,要么全部保留
-
如果参数仅有一个时,可以省略小括号
-
如果代码块中仅有一行代码,可以省略:大括号、分号、return
java
public class CalculatorDemo1 {
public static void main(String[] args) {
useCalculator(( num1, num2)-> num1*num2//输出200
);
}
public static void useCalculator(Calculator calculator){
int result = calculator.calc(10,20);
System.out.println(result);
}
}
java
public class StringHandlerDemo {
public static void main(String[] args) {
useStringHandler(new StringHandler() {
@Override
public void printMessage(String msg) {
System.out.println();
}
});
//Lambda表达式省略
useStringHandler( msg-> System.out.println("nh"+msg));//输出:nh你好
}
public static void useStringHandler(StringHandler stringHandler){
stringHandler.printMessage("你好");
}
}