博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lamdba表达式
阅读量:5345 次
发布时间:2019-06-15

本文共 1441 字,大约阅读时间需要 4 分钟。

lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。

 

lambda表达式的语法:

1. 参数 -> 表达式(无需指定返回类型)

   (String first, String second)

  -> first.length() - second.length()

 

2. 如果代码要完成的计算无法放在一个表达式中,可以把代码放在{}中

  (String first, String second)

  ->

  {

    if (first.length() < second.length())  return -1;

    else if (first.length() > second.length())  return 1;

    else return 0;

  }

 

3. 即使lambda表达式没有参数,仍然要提供空括号

  () -> { for(int i=0; i>=0;i--) System.out.println(i); }

 

4. 如果可以推导出表达式的参数类型,则可以忽略其类型

  Comparator<String> comp 

    = (first, second)  //编译器可以推导出first和second必然是字符串

      -> first.length()-second.length();

 

5. 如果方法只有一个参数,而且这个参数的类型可以推导得出,那么也可以省略小括号

  ActionListener listener = event ->

    System.out.println("The time is " + new Date());

 

 

 

函数式接口:对于只有一个抽象方法的接口,需要这种接口的对象时,就可以提供一个lambda表达式。

1. Arrays类的sort方法的第二个参数需要一个Conparator实例。

  Arrays.sort (pianets(first , second-> first.lengthO second.lengthO

 

方法引用:

1. Timer t = new Timer(1000, event -> System.out.println(event)):

  Timer t = new Timer(1000, Systei.out::println);

  表达式 System.out::println 是一个方法引用( method reference ), 它等价于 lambda 表达式

  x -> System.out.println(x)

  用:: 操作符分隔方法名与对象或类名主要有 3 种情况

  (1) object::instanceMethod   例如this::equals 等同于 x-> this.equals(x)  super::instanceMethod  

  (2) Class::staticMethod   例如:Math::pow 等价于(x,y) -Math.pow(x, y

  (3) Class.instanceMethod

 

lambda表达式可以捕获外围作用域中变量的值,但是只能引用值不会改变的变量,lambda捕获的变量必须是最终变量。

 

转载于:https://www.cnblogs.com/leeyuxin/p/10667020.html

你可能感兴趣的文章
CSS: caption-side 属性
查看>>
python 用数组实现队列
查看>>
认证和授权(Authentication和Authorization)
查看>>
Mac上安装Tomcat
查看>>
CSS3中box-sizing的理解
查看>>
传统企业-全渠道营销解决方案-1
查看>>
Lucene全文检索
查看>>
awk工具-解析1
查看>>
推荐一款可以直接下载浏览器sources资源的Chrome插件
查看>>
CRM product UI里assignment block的显示隐藏逻辑
查看>>
AMH V4.5 – 基于AMH4.2的第三方开发版
查看>>
Web.Config文件配置之配置Session变量的生命周期
查看>>
mysql导入source注意点
查看>>
linux下编译安装nginx
查看>>
ArcScene 高程不同的表面无法叠加
查看>>
[ONTAK2010] Peaks
查看>>
DLL 导出函数
查看>>
windows超过最大连接数解决命令
查看>>
12个大调都是什么
查看>>
angular、jquery、vue 的区别与联系
查看>>