Java Lambda表达式入门示例
本文实例讲述了JavaLambda表达式。分享给大家供大家参考,具体如下:
一点睛
Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例。
Lambda表达式主要作用就是代替匿名内部类的繁琐语法。
它由三部分组成:
- 形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。
- 箭头(->),必须通过英文等号和大于符号组成。
- 代码块。如果代码块只有包含一条语句,Lambda表达式允许省略代码块的花括号,如果省略了代码块的花括号,这条语句不要用花括号表示语句结束。Lambda代码块只有一条return语句,甚至可以省略return关键字。Lambda表达式需要返回值,而它的代码块中仅有一条省略了return的语句,Lambda表达式会自动返回这条语句的值。
二用匿名内部类实现命令模式
1代码
Command接口
publicinterfaceCommand { //接口里定义的process()方法用于封装“处理行为” voidprocess(int[]target); }
ProcessArray类
publicclassProcessArray{ publicProcessArray(){ } publicvoidprocess(int[]target,Commandcmd){ cmd.process(target); } }
CommandTest类
publicclassCommandTest{ publicCommandTest(){ } publicstaticvoidmain(String[]args){ ProcessArraypa=newProcessArray(); int[]array=newint[]{3,-4,6,4}; pa.process(array,newCommand(){ publicvoidprocess(int[]target){ intsum=0; int[]var3=target; intvar4=target.length; for(intvar5=0;var52运行
数组元素的总和是:9
三用Lambda表达式实现命令模式
1代码
publicclassCommandTest2 { publicstaticvoidmain(String[]args) { ProcessArraypa=newProcessArray(); int[]array={3,-4,6,4}; //处理数组,具体处理行为取决于匿名内部类 pa.process(array,(int[]target)->{ intsum=0; for(inttmp:target) { sum+=tmp; } System.out.println("数组元素的总和是:"+sum); }); } }2运行
数组元素的总和是:9
四比较
Lambda表达式与匿名内部类比较,不需要newXXX(){}这种繁琐的代码,不需要指出重写方法名字,不需要给出重写方法的返回值类型,只要给出重写的方法括号以及括号里的形参列表即可。
Lambda表达式的代码块会代替实现方法的方法体,Lambda表达式就相对于一个匿名方法。
五Lambda表达式的简化写法
1代码
interfaceEatable { voidtaste(); } interfaceFlyable { voidfly(Stringweather); } interfaceAddable { intadd(inta,intb); } publicclassLambdaQs { //调用该方法需要Eatable对象 publicvoideat(Eatablee) { System.out.println(e); e.taste(); } //调用该方法需要Flyable对象 publicvoiddrive(Flyablef) { System.out.println("我正在驾驶:"+f); f.fly("【碧空如洗的晴日】"); } //调用该方法需要Addable对象 publicvoidtest(Addableadd) { System.out.println("5与3的和为:"+add.add(5,3)); } publicstaticvoidmain(String[]args) { LambdaQslq=newLambdaQs(); //Lambda表达式的代码块只有一条语句,可以省略花括号。 lq.eat(()->System.out.println("苹果的味道不错!")); //Lambda表达式的形参列表只有一个形参,省略圆括号 lq.drive(weather-> { System.out.println("今天天气是:"+weather); System.out.println("直升机飞行平稳"); }); //Lambda表达式的代码块只有一条语句,省略花括号 //代码块中只有一条语句,即使该表达式需要返回值,也可以省略return关键字。 lq.test((a,b)->a+b); } }2运行
LambdaQs$$Lambda$1/1078694789@3d075dc0
苹果的味道不错!
我正在驾驶:LambdaQs$$Lambda$2/1149319664@7cca494b
今天天气是:【碧空如洗的晴日】
直升机飞行平稳
5与3的和为:8
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。