java中的lambda表达式学习
lambda表达式是给函数式接口(sam接口)的变量或形参赋值的表达式。
lambda表达式替代了原来使用匿名内部类的对象给函数式接口(sam接口)的变量或形参赋值的形式。
java提供了大量的函数式接口,在java.util.function包中,一般包含四大类:
1、消费型接口:consumer<t> : void accept(t t);
2、供给型接口:supplier<t> : t get();
3、判断型接口:predication<t> : boolean test(t t);
4、功能型接口:function<t, r> : r apply(t t);
自定义函数式接口,使用@functionalinterface注解。
lambda表达式语法格式:
(形参列表) -> {lambda体}:
(1)(形参列表)就是sam接口的抽象方法的形参列表
(2){lambda体}就是实现sam接口的抽象方法的方法体
(3)->称为lambda操作符,由“减号”和“大于号”构成,中间不能有空格
简化:
(1)如果{lambda体}只有一句语句,可以省略{}以及{}中的语句的结束;,如果{}没有省略的话,;就不能省略
(2)如果(形参列表)中形参的类型是已知的,获取可以推断,那么数据类型可以省略
(3)如果(形参列表)只有一个形参,并且数据类型也已经省略了,那么这个()可以省略了,如果数据类型没有省略,()不能省略
(4)如果{lambda体}只有一句语句,并且是一个return语句,那么可以省略{}以及{}中的语句的结束;还有return。
(5)如果没有形参,()不能省略
简单lambda示例:
new thread(() -> {system.out.println("lambda测试");}).start();-> 简化(只有一个语句,可以去掉大括号和分号):new thread(() -> system.out.println("lambda测试")).start();
connection的foreach(consumer<t> c)方法:
list<integer> list = arrays.aslist(1,2,3,4,5); =》list.foreach(num -> system.out.println(num));
上一篇: 如何自学java开发?
下一篇: java TreeSet