zoukankan      html  css  js  c++  java
  • 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表达式也可以包含多个参数,这个代码不是把两个数相加,而是创建了加法函数,用来计算两个数相加的结果。

  • 相关阅读:
    深入理解JUC:第五章:CyclicBarrier循环栅栏
    技术汇总:第十八章:枚举的简单使用
    深入理解JUC:第四章:CountDownLatch倒计时器
    java锁:第四章:读写锁
    java锁:第三章:自旋锁
    java锁:第二章:可重入锁和递归锁
    java锁:第一章:公平和非公平锁
    集合线程安全问题:第一章:集合类不安全之并发修改异常
    深入理解JUC:第一章:volatile的三大特性
    深入理解JUC:第二章:CAS:CompareAndSwap底层原理
  • 原文地址:https://www.cnblogs.com/zkyefei/p/9300240.html
Copyright © 2011-2022 走看看