Lambda初探

Lambda表达式基本概念

  1. 函数式接口:定义了有且仅有一个抽象方法的接口,哪怕接口中有其他默认的方法。
  2. 允许以内联的方式函数式接口的抽象方法提供实现,并把整个表达式作为函数接口的实现(具体的说是函数接口的具体实现)
  3. Lambda函数的签名:()->{};
  4. 函数描述符:函数表达式的签名基本上就是lambda表达式的签名。我们将这抽象的方法叫做函数描述符。

JAVA8中提供了4种函数式接口,分别如下

  • Predicate(断言型接口)

提供一个 boolean test(T):传入一个T参数,返回一个boolean值

  • Consumer(消费型接口,有去无回)

提供一个 void accept(T):传入一个T参数,无返回值

  • Function(功能性接口,有去有回)

提供一个 R apply(T):传入一个T参数,返回一个R值

  • Supplier(供给型接口)

提供一个 R get():无传入参数,返回一个R值

相应的简单实现如下
    @Test
    public void test1() {
        Predicate<Integer> predicate = (x)->x>100;
        predicate.test(101);
    }
    @Test
    public void test2() {
        Consumer<Integer> consumer = (x)->System.out.println(++x);
        consumer.accept(999);
    }
    @Test
    public void test3() {
        Supplier<String> supplier = ()->"hello";
        System.out.println(supplier.get());
    }
    @Test
    public void test4() {
        Predicate<Integer> predicate = (x)->x>100;
        predicate.test(101);
    }
    @Test
    public void test5() {
        Function<Integer, String> function = (x)->"result:"+x;
        function.apply(520);
    }

同时这四个接口还有一些子类接口,可以实现更多的操作

image

在package java.util.function;包中

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • lambda表达式(又被成为“闭包”或“匿名方法”)方法引用和构造方法引用扩展的目标类型和类型推导接口中的默认方法...
    183207efd207阅读 1,499评论 0 5
  • 前段时间一直在看lambda表达式,但是总感觉吃不透,在深入了解lambda表达式的时候,需要很多基础的知识栈。这...
    西瓜真好吃丶阅读 2,743评论 0 7
  • 注:之前关于Java8的认知一直停留在知道有哪些修改和新的API上,对Lambda的认识也是仅仅限于对匿名内部类的...
    mualex阅读 2,846评论 1 4
  • 转载自:《深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)》——Luci...
    琦小虾阅读 730评论 0 5
  • 写作的第一天! 想要写东西,不为别的,只希望写作能让我思路越来越清晰,智商在线的时间能长点。 会有这个想法,是因为...
    一簏阅读 417评论 6 8