Lambda表达式,实际上就是函数式编程
我们先用一个例子体验一下lambda表达式
- Programmer:程序员接口,里面有一个编码的抽象方法
- Me:我的类,实现了程序员接口
- Demo:测试Demo,里面有useProgrammer(Programmer p)方法,方法内部调用接口的writeCode()方法,主方法分别用实现类、匿名内部类、lambda表达式3中方式调用useProgrammer方法。
Programmer接口的代码
package com.testLambda;
/**
* @author 林高禄
* @create 2020-06-02-10:49
*/
public interface Programmer {
void writeCode();
}
Me类的代码
package com.testLambda;
/**
* @author 林高禄
* @create 2020-06-02-10:51
*/
public class Me implements Programmer {
@Override
public void writeCode() {
System.out.println("整天加班写代码!");
}
}
测试Demo的代码
package com.testLambda;
/**
* @author 林高禄
* @create 2020-06-02-10:54
*/
public class Demo {
public static void main(String[] args) {
//实现类
Programmer p = new Me();
useProgrammer(p);
//匿名内部类
useProgrammer(new Programmer() {
@Override
public void writeCode() {
System.out.println("需求永远在改变!");
}
});
// lambda表达式
useProgrammer(()->{
System.out.println("加班永无止尽!");
});
}
private static void useProgrammer(Programmer p){
p.writeCode();
}
}
运行测试Demo,输出结果
整天加班写代码!
需求永远在改变!
加班永无止尽!
Lambda表达式的语法:
(parameters) -> expression 或 (parameters) ->{ statements; }
- 格式:(行驶参数)->{代码块}
- 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
- ->:由英文画线和大于符号组成,固定写法。代表指向动作
- 代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
下面就针对lambda表达式中,是否有参数,是否有返回值做一个代码实例
- Interface1:接口1,无参无返回值方法mathod()
- Interface2:接口2,有参无返回值方法mathod()
- Interface3:接口3,有参有返回值方法mathod()
- Demo2:测试Demo2,主方法针对以上3中情况做示例
Interface1:接口1代码
package com.testLambda;
/**
* @author 林高禄
* @create 2020-06-02-11:40
*/
pub