Java之Lambda表达式
Lambda表达式简介
- Java8 引入函数式编程风格
- 函数式编程是一种不同的编程思想,定义函数作为一等公民赋值给变量,作为参数或者返回值进行传递
- 可以理解为一种匿名函数的代替
- 通过行为参数化传递代码
Lambda表达式的形式
(parameters) -> expression
(parameters) -> {statement;}
Lambda表达式的重要特征
- 可选的类型声明,可以不声明参数类型,编译器可以统一的识别参数值
- 可选的参数小括号,一个参数无需小括号,但多个参数需要小括号
- 可选的大括号,主体包含一个表达式则不需要大括号
- 可选的返回关键字,主体只有一个表达式返回值,编译器会自动返回值,大括号需要指明的返回值
具体的表现形式
形式一:没有参数
1
() -> System.out.println("Hello World")
形式二:只有一个参数
1
name -> System.out.println("Hello World from" + name + "!")
形式三:没有参数,逻辑复杂
1
2
3
4() -> {
System.out.println("Hello");
System.out.println("World");
}形式四:包含两个参数的方法
1
2BinaryOperator<Long> functionAdd = (x, y) -> x + y;
Long result = functionAdd.apply(1L, 2L);形式五:对参数显示声明
1
2BinaryOperator<Long> functionAdd = (Long x, Long y) -> x + y;
Long result = functionAdd.apply(1L, 2L);
函数式接口
- 接口中只有一个抽象方法
- Java8的函数式接口注解:
@FunctionInterface
- 只是作为标注,并不是强制的将函数式接口实现个一个注解,目的只是为了帮助编译器校验接口是否符合函数式接口的定义(即:是否只有一个抽象方法)
- 函数式接口的抽象方法签名:函数描述符
- 作为函数式接口入参的校验标准
实战:自定义函数式接口
自定义函数式接口,实现读取本地文件后自定义处理逻辑功能
定义文件处理函数式接口
1 | package com.function.file.service; |
文件服务类
1 | package com.function.file.service; |
测试
1 | package com.function.file.service; |
url:文件路径
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jing's Blog!