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

  • 相关阅读:
    关于PCA算法的一点学习总结
    c++大作业--学籍管理系统--
    AVC1与H264的差别
    Java多线程之wait(),notify(),notifyAll()
    jquery——zTree, 完美好用的树插件
    一位Erlang程序猿的自白
    SQL Server 中关于EXCEPT和INTERSECT的使用方法
    JAVA程序猿怎么才干高速查找到学习资料?
    CFileDialog的使用方法简单介绍
    XCode 打包问题巧遇
  • 原文地址:https://www.cnblogs.com/zkyefei/p/9300240.html
Copyright © 2011-2022 走看看