• Java8 新特性lambda表达式(一)初始


    本篇参考Richard Warburton的 java8 Lambdas :Functional Programming for the Masses

    学习lambda表达式之前,需要知道什么是函数式编程。

    函数式编程不尽相同,但是其核心是,使用不可变的值和函数,函数对一个值进行处理,映射返回成另一个值的过程。

    示例1:

    hangmeimei.speech(new speak(){

      public void speechs(Parameter parameter){

        System.out.println("演讲");

      }

    })

    上面的代码核心就是韩梅梅演讲说了一句话,但是因为内部内的样板看起来很是繁琐

    使用lambda表达式:hangmeimei.speech(parameter ->System.out.println("演讲"));

    parameter与上面的参数名称一样。在使用内部内时候,我们需要显示的将参数的类型写出来,而使用lambda表达式则可以省略参数的类型Parameter。

    这是因为javac更具程序的上下文,也就是方法的签名在后台推出了参数parameter的类型Parameter。

    尽管与之前相比,lambda表达式中的参数需要的样板代码很少,但是Java8依然是静态类型语言。为了怎加可读性并且迁就我们的习惯,声明参数的时候也可以包括类型的信息,而且有时编译器不一定能根据上下文推出参数的类型!

    lambda 表达式除了基本形式之外,还有一下几种变体。

    1、Runable noA =()->System.out.println("演讲");

    上式中所示的lambda表达式没有参数,使用空()表示没有参数。该lambda表达式实现了Runable接口,该接口也只有一个run方法,且run没有参数,返回类型是void。

    2、Dog noA=event ->System.out.println("演讲");

    该lambda表达式含有一个参数,可以省略括号。

    3、Runable noA()->{

    System.out.println("演讲");

    System.out.println("演讲");

    }

    如上所示,lambda表达式的主体不仅可以是一个表达式,也可以是一个代码块。使用大括号括起来。

    4、Round add=(x,y)->x+y;

    lambda表达式也可以包含多个参数,这个代码不是把两个数相加,而是创建了加法函数,用来计算两个数相加的结果。

  • 相关阅读:
    新年第一个工作日,淦一个扫码登录
    eltree 从叶子节点入手解决选中问题
    elcascader 级联选择器 :回显回显回显
    VueX Module:路过你,忘记你
    我变成了曾经最讨厌的模样:路由屎山有感,Next 你是风暴也是风暴眼
    取小数点后两位:打造一个自己的toFixed
    dayjs: 兄弟moment.js寄了,我还在
    前端鄙视题
    android WebView的配置
    springboot自定义通用枚举校验注解
  • 原文地址:https://www.cnblogs.com/zkyefei/p/9300240.html
Copyright © 2020-2023  润新知