美文网首页
Lambda表达式

Lambda表达式

作者: liangxifeng833 | 来源:发表于2019-08-19 10:47 被阅读0次

    先看一个张图

    lambda-1.jpg

    函数式接口

    • 接口中只有一个函数需要被实现的接口类型,我们叫它 函数式接口;
    • @FunctionalInterface注解声明该接口是函数式接口, 也就是说规定该接口中有且只有一个方法;
      比如:
      //只有一个函数的接口叫做函数式接口
      @FunctionalInterface
      interface MyAPi {
          void doSomeThing(String s);
      }
      

    Lambda表达式

    • Lambda表达式本身就是一个接口的实现, 这样就可以将“一块代码”赋给一个Java变量, 比如:
        MyAPi myAPi = (s) -> System.out.println(s);
        myAPi.doSomeThing("1212"); //输出1212
      
    • 我们可以对比一下Lambda表达式和传统的Java对同一个接口的实现:


      image.png
    • 以上两种写法本质上是等价的。但是显然,Java 8中的写法更加优雅简洁。并且,由于Lambda可以直接赋值给一个变量,我们就可以直接把Lambda作为参数传给函数, 而传统的Java必须有明确的接口实现的定义,初始化才行:


      image.png

    参考资料:
    https://www.zhihu.com/question/20125256
    https://www.runoob.com/java/java8-lambda-expressions.html

    相关文章

      网友评论

          本文标题:Lambda表达式

          本文链接:https://www.haomeiwen.com/subject/hplekctx.html