当前位置: 移动技术网 > IT编程>开发语言>Java > java中的lambda表达式学习

java中的lambda表达式学习

2020年04月08日  | 移动技术网IT编程  | 我要评论

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));

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网