UM2L16——lambda表达式
UM2L16——lambda表达式
Java中lambda表达式语法
Java中的lambda表达式和C#中区别很大,Java中没有委托和事件
只有通过函数式接口来存储lambda表达式来进行使用,Java的函数式接口可以充当C#中委托的角色
基本结构:(参数) -> {代码块}
基于基本结构的写法:
-
() -> {代码块};
-
() -> 结果表达式;
(相当于返回值) -
(参数) -> {代码块};
-
参数 -> {代码块};
(当参数只有一个时) -
参数 -> 结果表达式;
(相当于返回值) -
(参数1,参数2,参数3...) -> {代码块};
-
(参数1,参数2,参数3...) -> 结果表达式;
(相当于返回值)
用于装载lambda表达式的函数式接口
Java没有如C#那样的委托与事件,如果想要实现类似于委托那样的实现,我们可以通过函数式接口存储lambda表达式方法来实现
函数式接口指仅仅包含一个抽象方法的接口,声明函数式接口后,我们可以用以下语法来使用lambda表达式
接口名 变量名 = lambda表达式
,可以将Java的函数式接口看作Java中扮演的委托的角色
注意:lambda表达式的结构必须和函数式接口中声明的方法一致(返回值,参数数量)
1 | interface ITest { |
输出:
1 | 3 |
lambda表达式调用外部变量
- 无法更改局部变量的值
- 可以更改外部类的成员变量的值
1 | interface ITest { |
输出:
1 | 100 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!