50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > 关于Lambda表达式的简单语法理解 有参无参 有无返回值的格式的理解 仅限编程新手

关于Lambda表达式的简单语法理解 有参无参 有无返回值的格式的理解 仅限编程新手

时间:2020-03-23 19:05:35

相关推荐

关于Lambda表达式的简单语法理解 有参无参 有无返回值的格式的理解 仅限编程新手

目录

上代码无参无返回值:一个参数无返回值多个参数无返回值有参数有返回值总结

之前已经讲解过Lambda表达式最基础的格式,这里我直接就不再讲解了

上代码

/*** @Author Lambda基础测试演练* @Date /8/10 19:01* @Version 1.0*/public class Test3 {//定义一个接口interface Te{void aa();}//使用匿名内部类和Lambda表达式重写接口public static void main(String[] args) {//#1匿名内部类Te te = new Te() {@Overridepublic void aa() {System.out.println("我是匿名内部类中的aa方法");}};Te te1 = ()->{System.out.println("我是lambda表达式中的aa方法 ");};te1.aa();}}

从上面我们可以看到,我们的Lambda表达式的最基础的格式,就是接口中的方法没有返回值也没有参,那么下就了解一下有返回值,有参的情况下,分别怎么写:

无参无返回值:

上一个代码中,虽然写的也是无参无返回值,但不是最简洁的写法:

如果在Lambda表达式的{ }中只有一条语句,比如上面的只有System.out.println("我是lambda表达式中的aa方法 ");

那么这个时候,我们就可以直接把{ }给省略掉,比如:

但这里只适用于只有一条语句,如果多出一条,这样写 就不行了

除此,还有两点,第一就是上面的多条语句不能省略{ }

2是Lambda表达式只能引用外部的final的局部变量,它本身的局部变量不能被final修饰,但同时这个 变量也不能被后面的代码修改,具有潜性的final修饰

一个参数无返回值

这里的话你们只要重心记住最简洁的两个方法就可以了,但是你们必须要知道什么可以省略,什么不可以省略!

多个参数无返回值

这里要注意,如果接口内方法有多个参数 ,那么Lambda表达式就不能把()省略,其他的基本于于一个参数的 一致;

有参数有返回值

interface Te{int aa(int a);}public static void main(String[] args) {Te te1 = (int a)->{return a+10;};int sum=te1.aa(10);System.out.println(sum);//类型可以省略Te te2 = (a)->{return a+10;};int sum2=te2.aa(10);System.out.println(sum2);//括号可以省略Te te3 = a->{return a+10;};int sum3=te3.aa(10);System.out.println(sum3);//只有一条return语句,{}和return可以均省去Te te5 = a->a+10;int sum5=te5.aa(10);System.out.println(sum5);//如果有多条语句,把后面的{ }加上就可以了Te te4 = (a)->{System.out.println("我是te4的aa方法 ");System.out.println("我是te4的aa方法 ");System.out.println("我是te4的aa方法 ");return a+10;};int sum4=te4.aa(10);System.out.println(sum4);}}

这里要注意:只有一条return语句,{}和return可以均省去

总结

虽然使用 Lambda 表达式可以对某些接口进行简单的实现,但并不是所有的接口都可以使用 Lambda 表达式来实现;

Lambda 规定接口中只能有一个需要被实现的抽象方法,不是规定接口中只能有一个方法,称为函数式接口

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。