介绍
本篇文章给大家分享的是有关λ表达式如何在Java项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>一点睛强>
λ表达式支持将代码块作为方法参数,λ表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例。
λ表达式主要作用就是代替匿名内部类的繁琐语法。
它由三部分组成:
- <李>
形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。
李> <李>箭头(→),必须通过英文等号和大于符号组成。
李> <李>代码块。如果代码块只有包含一条语句,λ表达式允许省略代码块的花括号,如果省略了代码块的花括号,这条语句不要用花括号表示语句结束.Lambda代码块只有一条返回语句,甚至可以省略返回关键字.Lambda表达式需要返回值,而它的代码块中仅有一条省略了返回的语句,λ表达式会自动返回这条语句的值。
李><强>二用匿名内部类实现命令模式强>
1代码
命令接口
public interface 命令 {//,才能接口里定义的过程()方法用于封装”处理行”为 void 才能;过程(int[],目标); }
ProcessArray类
public class ProcessArray { public 才能;ProcessArray (), { ,,} public 才能;void 过程(int[],目标,Command cmd), { ,,,cmd.process(目标); ,,} }
CommandTest类
public class CommandTest { public 才能;CommandTest (), { ,,} public 才能;static  void main (String [], args), { ,,,ProcessArray pa =, new ProcessArray (); ,,,int [], array =, new int [] {3,, 4, 6, 4}; ,,,pa.process(数组,,new 命令(),{ ,,,,,public void 过程(int[],目标),{ ,,,,,,,int sum =, 0; ,,,,,,,int [], var3 =,目标; ,,,,,,,int var4 =, target.length; ,,,,,,,,(int var5 =, 0;, var5 & lt;, var4;, + + var5), { ,,,,,,,,,int tmp =, var3 [var5]; ,,,,,,,,,sum +=, tmp; ,,,,,,,} ,,,,,,,System.out.println(“数组元素的总和是:“,+,总和); ,,,,,} ,,,}); ,,} }
2运行
数组元素的总和是:9
引用><强>三用λ表达式实现命令模式强>
1代码
public class CommandTest2 { public 才能;static  void main (String [], args) {才能 ,,ProcessArray pa =, new ProcessArray (); ,,int [], array =, {3,, 4, 6, 4}; ,,//,处理数组,具体处理行为取决于匿名内部类 ,,pa.process (array ,, (int[],目标)→{ ,,,,,int sum =, 0; ,,,,,for (int tmp : target ) ,,,,,{ ,,,,,,,sum +=, tmp; ,,,,,} ,,,,,System.out.println(“数组元素的总和是:“,+,总和); ,,,,}); ,,} }2运行
数组元素的总和是:9
引用><强>四比较强>
λ表达式与匿名内部类比较,不需要新XXX(){}这种繁琐的代码,不需要指出重写方法名字,不需要给出重写方法的返回值类型,只要给出重写的方法括号以及括号里的形参列表即可。
λ表达式的代码块会代替实现方法的方法体,λ表达式就相对于一个匿名方法。
<强>五λ表达式的简化写法强>
1代码
interface 可吃的 { void 才能品味(); } interface 可以飞行的 { void 才能飞(String 天气); } interface 可增加的 { int 才能;添加(int a ,, int b); } public class  LambdaQs {//,才能调用该方法需要食物对象 public 才能;void 吃(Eatable e) {才能 ,,System.out.println (e); ,,e.taste (); ,,}//,才能调用该方法需要适航的对象 public 才能;void 驱动(Flyable f) {才能 ,,System.out.println(“我正在驾驶:“,+,f); ,,f.fly(“【碧空如洗的晴日】“); ,,}//,才能调用该方法需要可增加的对象 public 才能;void 测试(Addable 添加) {才能 ,,System.out.println(“5与3的和为:“,+,add.add (5, 3)); ,,} public 才能;static  void main (String [], args) {才能 ,,LambdaQs lq =, new LambdaQs (); ,,//,λ表达式的代码块只有一条语句,可以省略花括号。 ,,lq.eat (()→, System.out.println(“苹果的味道不错!“)); ,,//,λ表达式的形参列表只有一个形参,省略圆括号 ,,lq.drive (weather → null null null null null null null null nullλ表达式如何在Java项目中使用