java8-basic
本文最后更新于:2022年6月1日 晚上
Java 8 最大的变化是引入了函数式编程(functional programming)的概念。具体而言,Java 8 增加了 lambda 表达式(lambda expression)、方法引用(method reference)、和流(stream)。本篇文章主要介绍了 lambda 表达式、方法引用和函数式接口(functional interface)的基本语法,并讨论了接口中的默认方法和静态方法
Java8 基础
lambda 表达式
从匿名内部类到 lambada 表达式
函数式接口是一种包含单一抽象方法(single abstract method)的接口。类实现接口,只需要从写接口中的所有抽象方法即可,这可以通过顶级类(top-level class)、内部类、匿名内部类来实现。
以匿名内部类的方式实现 Runnable 接口
1 |
|
以 lambda 表达式的方式实现 Runnable 接口
1 |
|
与匿名内部类相比, lambda 实现 Runnable 接口:
- 省略了 new 关键字和接口名()以及后面的{}
- 省略了权限修饰符、返回值类型、方法名
- 使用 -> 来将参数(由于 run() 方法没有参数仅用小括号代替)和方法体隔开
lambada 表达式的格式
lambda 表达式的标准格式由3部分构成:参数列表、**->、方法体**
1 |
|
lambda 表达式的省略格式
- 参数列表中的参数类型可以省略
- 如果参数有且仅有一个,则小括号可以省略
- 如果方法体中有且仅有一个语句,则可以同时省略大括号、return关键字、语句分号
java.io.FilenameFilter 是一个函数式接口,包含一个单一抽象方法 accept,方法签名如下:
1 |
|
接口中的静态方法
接口中的静态方法注意点:
- 静态方法必须有一个实现
- 无法重写静态方法
- 通过接口名调用静态方法
- 无须实现接口以实用静态方法
java8-basic
https://shgang97.github.io/posts/java8-basic-34a9a2a0fd8f/