• Lambda表达式语法进一步巩固


    上一次已经初步使用到了Lambda表达式了,这次再次对它的语法进行一下巩固,因为它实在是太重要的,所以多花时间彻底理解它是非常有必要的。

     在"Java8 in Action"一书中对Lambda表达式有如下描述,做个了解:

    下面则用代码去使用Lambda表达式来加深对它的印象,会有各种不同的形式,其中还会涉及到一些使用判断它对错的地方,总之这次纯练Lambda表达式。

    对于集合的排序我想肯定都非常熟悉,先看下原来它的模拟写法:

    不多解释,人人都懂,上次也提到过Comparator在JAVA8中是可以使用Lambda表达式的,其接口也已经声明成函数式了:

    所以用Lambda改造如下:

    其中需要注意的几个细节:

    1、参数类型可以省略,如代码:

    2、->之后的部份如果木有加{}号,返回值的return可以省略,如代码的示:

    但是!如果有了{},而且方法有返回值,那必须加上return:

    3、一个以上的参数必须要加括号:

    那Lambda表达式的语法到底是怎么定义的呢?书中对它有介绍,如下:

    下面来看几个合法的Lambda表达式,书上也介绍了:

    咱们自己动手也来写几个合法的Lambda表达式看看:

    ①、第一个合法表达式:

    这时因为这个Lambda表达式是为了Function服务的,所以可以给它定义一个成员变量:

    有木有发现在Rxjava中有用到Function这个接口,说明Rxjava是基于JAVA8的特性来写的框架,这时查看下Function这个类在JAVA8中所在包的位置:

    这么多Function得学多久呀,不用太过担心,这些都是可以一通百通的,之后也会慢慢去学,先有个大致的印象。

    接着继续写合法Lambda表达式:

    ②、第二个合法表达式:

    这是上次我们写过的,也是需要用Function接收一下,如下:

    这里又出现了另外一个Function,也是其JAVA8众多Function中的一员,粗略看一下它的源码:

    ③、第三个合法表达式:

    其实它的接口原型就是类似于这种:

    ④、第四个合法表达式:

    它的接口原型是:

    上面写的这些合法的Lambda表达式可以总结为下面两种:


    • 如:
    • 如: 

     那基于上面正确的Lambda语法,判断一下下面的几种写法是否是合法的:


    • 合法的,实际上Runnable接口就是它这种:

    • 很显示是合法的,不多解释了。

    •  

      这个不合法,有两点不合法:
      1、有return,必须要有大括号;
      2、return是个statements,所以后面需要跟一个";",更正如下:

    •  

      不合法,修正它有两种:
      1、去掉分号:
      2、加上分号与大括号,并加上return:

  • 相关阅读:
    HTML5离线缓存问题
    一款我常用到的手机app
    修补: Vs调试时火狐自动增加www.和 .com
    linq to xml 控制投影的类型以解决无法返回匿名类型
    创建数据绑定模板控件 Asp.net
    发布一个IEJs调试开关,方便Vs调试
    TransmitFile下载文件(部分转载)
    如何在网页中添加地图
    MVC中Jqgrid的用法
    CSS中如何将li横向排列
  • 原文地址:https://www.cnblogs.com/webor2006/p/7705130.html
Copyright © 2020-2023  润新知