Java开发『函数式编程』——Lambda表达式
今天起,我们来学习Java开发工程师必备技能之『函数式编程』——Lambda表达式。
现在很多小伙伴进入公司或者看到别人代码都在使用函数式编程方式了,代码又简单看的逼格又高。
我们知道JDK8是Java一个重要的更新版本,更新了很多的特性,例如:新增了日期操作类、接口增加静态和默认方法、Lambda 表达式、函数式接口、多重注解、Stream类、Optional空指针处理类等等的特性,而函数式编程就是其中重要的特性,这篇我们先来了解下Lambda 表达式。
Lambda 表达式的引入
回想下我们在学习Java基础的时候,对于如何对接口进行实例化,其中一种方式就是使用匿名内部类的方式了,这样的好处就是不需要我们再定义一个class类实现接口然后重写抽象方法之后去创建class类才能得到接口实例,节省了代码。
如下代码:
而Lambda 就是简化它而来的。
1.Lambda 表达式的介绍
Lambda 表达式又称为匿名函数即没有函数名的函数,它的主要目的呢是对接口匿名实现类的一个简化。使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。
Lambda 是一个闭包函数,所谓闭包就是指是能够读取其他函数内部变量的函数。例如:A、B两个函数,A函数可以读取到B函数里面的变量,这就是闭包,而通常函数只有内部才能互相访问,所以闭包可以理解为“定义在一个函数内部的函数”。而这个闭包就是函数式编程的思想所在了。
Lambda表达式能够简化的接口中只能有一个抽象方法。这也是我们后面要提到的函数式接口。
2.Lambda 表达式的语法
(paramters) -> {expression};
格式说明:
l (paramters) :表示调用接口的方法。使用有如下特点:
① 如果有参数那么不需要写参数类型,编译器可以统一识别参数值。
例如: (a):表示接口的抽象方法只有一个参数。
(a,b):表示接口的抽象方法有两个参数。
② 如果参数只有一个参数那么()可以省略不写。
l -> :分隔符;
l {} :表示要重写的方法实现,使用有如下特点:
① 如果只有一行代码那么{}也可以省略不写
② 当只有一行代码的时候如果方法有返回值可以不写 return;编译器会自动返回值。
3.Lambda 表达式的使用
Lambda表达式访问外部局部变量问题:
因为Lambda表达式的本质是简化匿名内部类,所以如果想要在Lambda表达式里面访问外部变量的话,外面的局部变量的话必须是final类型的,在JDK1.8之后访问的局部变量可以省略final不写,但是依然是常量不能修改。
例如:
如果对s变量进行修改就不允许:
【未完待续…】
相关文章
- java面向对象高级分层实例_测试类(main方法所在的类)
- Java实现 LeetCode 85 最大矩形
- Java实现LeetCode_0020_ValidParentheses
- Java实现 蓝桥杯VIP 算法训练 单词接龙
- java垃圾回收期如何工作(编程思想)
- Java编程思想重点笔记(Java开发必看)
- 【JAVA】毕向东Java基础视频教程-笔记
- bug_ _java.lang.RuntimeException: Unable to start activity ComponentInfo{包名/类名}
- 读《java多线程编程》一些思考
- JAVA编程思想读书笔记(三)--RTTI
- Atitit. Async await 优缺点 异步编程的原理and实现 java c# php
- Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
- paip.提升性能--多核cpu中的java/.net/php/c++编程
- java unicode编程
- java并发编程实战读书笔记4--生产者消费者模式和队列
- Java学习路线-40:Java数据库编程基础操作
- JAVA编程:java环境安装和helloworld
- Java 8 中的 java.util.Map#computeIfAbsent
- Java如何获取IP属地 ip2region failed to create searcher with x:java.io.FileNotFoundException:( 系统找不到指定的路径)
- Java并发编程:并发容器之ConcurrentHashMap
- Java Enum使用演示样品枚举
- 从销售岗转行Java编程开发,4个月在成都拿下11k是什么水平?
- Java开发之高并发编程篇(八)——安全访问的集合(1)
- 我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作
- JAVA开发讲义(二)-Java程序设计之数据之谜二