编程|Java开发『函数式编程』——Lambda表达式

编程|Java开发『函数式编程』——Lambda表达式

文章图片

编程|Java开发『函数式编程』——Lambda表达式

今天起 , 我们来学习Java开发工程师必备技能之『函数式编程』——Lambda表达式 。
现在很多小伙伴进入公司或者看到别人代码都在使用函数式编程方式了 , 代码又简单看的逼格又高 。
我们知道JDK8是Java一个重要的更新版本 , 更新了很多的特性 , 例如:新增了日期操作类、接口增加静态和默认方法、Lambda 表达式、函数式接口、多重注解、Stream类、Optional空指针处理类等等的特性 , 而函数式编程就是其中重要的特性 , 这篇我们先来了解下Lambda 表达式 。

Lambda 表达式的引入
回想下我们在学习Java基础的时候 , 对于如何对接口进行实例化 , 其中一种方式就是使用匿名内部类的方式了 , 这样的好处就是不需要我们再定义一个class类实现接口然后重写抽象方法之后去创建class类才能得到接口实例 , 节省了代码 。
如下代码:

new Runnable(){
   @Override
   public void run() {
       System.out.println(\"匿名内部类实现接口\");
   
;

而Lambda 就是简化它而来的 。
1.Lambda 表达式的介绍
【编程|Java开发『函数式编程』——Lambda表达式】Lambda 表达式又称为匿名函数即没有函数名的函数 , 它的主要目的呢是对接口匿名实现类的一个简化 。 使用它设计的代码会更加简洁 。 当开发者在编写Lambda表达式时 , 也会随之被编译成一个函数式接口 。
Lambda 是一个闭包函数 , 所谓闭包就是指是能够读取其他函数内部变量的函数 。 例如:A、B两个函数 , A函数可以读取到B函数里面的变量 , 这就是闭包 , 而通常函数只有内部才能互相访问 , 所以闭包可以理解为“定义在一个函数内部的函数” 。 而这个闭包就是函数式编程的思想所在了 。
Lambda表达式能够简化的接口中只能有一个抽象方法 。 这也是我们后面要提到的函数式接口 。
2.Lambda 表达式的语法
(paramters) -> {expression;
格式说明:
l(paramters) :表示调用接口的方法 。 使用有如下特点:
① 如果有参数那么不需要写参数类型 , 编译器可以统一识别参数值 。
例如: (a):表示接口的抽象方法只有一个参数 。
(ab):表示接口的抽象方法有两个参数 。
② 如果参数只有一个参数那么()可以省略不写 。
l->:分隔符;
l{ :表示要重写的方法实现 , 使用有如下特点:
① 如果只有一行代码那么{也可以省略不写
② 当只有一行代码的时候如果方法有返回值可以不写 return;编译器会自动返回值 。
3.Lambda 表达式的使用
public class LambdaDemo {
   public static void main(String[
args) {
       //没有参数的
       A a1 = ()->{ System.out.println(\"没有参数的lambda表达式\"); ;
       a1.test();
       //省略了大括号
       A a2 = ()->System.out.println(\"省略了大括号的\");
       a2.test();
       //有一个参数
       Factory f = (pro) ->System.out.println(\"制造\"+pro);
       f.make(\"汽车\");
       //省略了小括号和大括号
       Factory f2 = pro->System.out.println(\"制造!\");
       f2.make(\"鞋子\");
       //有多个参数的
       Calc calc = (ab)->{return a+b;;
       calc.sum(1020);
       //省略了return的
       Calc calc2 = (ab)->a+b;