资讯专栏INFORMATION COLUMN

Lambda省略格式&Lambda使用前

20171112 / 1317人阅读

摘要:例如上例还可以使用的省略写法省略规则在标准格式的基础上,使用省略写法的规则为小括号内参数的类型可以省略如果小括号内有且仅有一个参,则小括号可以省略如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号关键字及语句分号。

package com.itheima.demo07.Lambda;

import java.util.ArrayList;

/*

Lambda表达式:是可推导,可以省略
凡是根据上下文推导出来的内容,都可以省略书写
可以省略的内容:
    1.(参数列表):括号中参数列表的数据类型,可以省略不写
    2.(参数列表):括号中的参数如果只有一个,那么类型和()都可以省略
    3.{一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略({},return,分号)
        注意:要省略{},return,分号必须一起省略

*/
public class Demo01ArrayList {

public static void main(String[] args) {
    //JDK1.7版本之前,创建集合对象必须把前后的泛型都写上
    ArrayList list01 = new ArrayList();

    //JDK1.7版本之后,=号后边的泛型可以省略,后边的泛型可以根据前边的泛型推导出来
    ArrayList list02 = new ArrayList<>();
}

}

3.10 Lambda省略格式 可推导即可省略

Lambda强调的是“做什么”而不是“怎么做”,所以凡是可以根据上下文推导得知的信息,都可以省略。例如上例还可以使用Lambda的省略写法:

public static void main(String[] args) {
      invokeCalc(120, 130, (a, b) -> a + b);
}
省略规则

在Lambda标准格式的基础上,使用省略写法的规则为:

小括号内参数的类型可以省略;

如果小括号内有且仅有一个参,则小括号可以省略;

如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

备注:掌握这些省略规则后,请对应地回顾本章开头的多线程案例。
3.11 练习:使用Lambda省略格式 题目

仍然使用前文含有唯一makeFood抽象方法的厨子Cook接口,在下面的代码中,请使用Lambda的省略格式调用invokeCook方法,打印输出“吃饭啦!”字样:

public class Demo09InvokeCook {
    public static void main(String[] args) {
        // TODO 请在此使用Lambda【省略格式】调用invokeCook方法
    }

    private static void invokeCook(Cook cook) {
        cook.makeFood();
    }
}
解答
public static void main(String[] args) {
      invokeCook(() -> System.out.println("吃饭啦!"));
}
3.12 Lambda的使用前提

Lambda的语法非常简洁,完全没有面向对象复杂的束缚。但是使用时有几个问题需要特别注意:

使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法
无论是JDK内置的RunnableComparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda。

使用Lambda必须具有上下文推断
也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。

备注:有且仅有一个抽象方法的接口,称为“函数式接口”。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75991.html

相关文章

  • python高阶函数使用方法实例

      本文关键给大家介绍了python高阶函数使用方法实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪  一、高阶函数  函数定义  python中,函数名是自变量,下边这一method函数名当做自变量,偏向1个计算出来的函数公式!因而函数名本身就是偏向函数的自变量,故自变量可偏向函数公式;  自变量可偏向函数公式,且函数的自变量可以接受自变量,那样任...

    89542767 评论0 收藏0
  • 教你用python从日期中获取年、月、日和星期等30种信息

      Python的作用还是比较的广泛的,在日常生活中,应用范围也比较的广泛,比如,我们可以去利用python,以此来获取年月日等相关的一些信息,具体的内容是什么呢?下面就给大家详细的解答下。  这次介绍日期数据处理。  用python中的方法对日期数据进行处理,我们可以获取很多有用的信息,比如年月日,星期,周次,季度等,这里分享工作和数据竞赛30余种常用的转换方法。  1计算日期的年月日时分秒,星...

    89542767 评论0 收藏0
  • 乐字节-Java8核心特性实战之Lambda表达式

    摘要:使用表达式,使得应用变得简洁而紧凑。很多语言等从设计之初就支持表达式。表达式的参数与函数式接口内方法的参数,返回值类型相互对应。更多教程和资料请上腾讯课堂乐字节 showImg(https://segmentfault.com/img/bVbtotg?w=935&h=345); Java8 引入Lambda表达式,允许开发者将函数当成参数传递给某个方法,或者把代码本身当作数据进行处理。...

    Karuru 评论0 收藏0
  • Python完成1个全连接层的神经元网络

      本文关键阐述了Python完成1个全连接层的神经元网络,文章内容紧扣主题进行详尽的基本介绍,具有很强的实用价值,必须的朋友可以学习一下  序言  在本文中,提前准备用Python重新开始完成1个全连接层的神经元网络。你可能会说,为何需要自己去完成,有许多库和架构能够给我们做这些事,例如Tensorflow、Pytorch等。这儿只想说仅有自己亲自完成了,就是自己的。  想起今日他从接触到了从事...

    89542767 评论0 收藏0
  • Java8新特性之Lambda表达式

    摘要:表达式说白了就是一种匿名方法,不需要方法名,修饰符,和返回值类型。就目前而言表达式只能简化接口的匿名内部类实现。 Lambda表达式说白了就是一种匿名方法,不需要方法名,修饰符,和返回值类型。 使用方法 首先在moudle的build.gradle文件中添加配置:app/build.gradle添加。 android { ... defaultConfi...

    mist14 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<