美文网首页
Lambda表达式

Lambda表达式

作者: 升空的焰火 | 来源:发表于2018-11-10 11:38 被阅读0次

    一、简介

    1.在java8之前,实现程序的可扩展性,我们常用匿名内部类传递。

    2.属于策略模式。

    3.函数式编程。

    二、语法

    Lambda表达式用于表示一个函数,所以它和函数一样,也拥有参数、返回值、函数体,但它没有函数名,所以Lambda表达式相当于一个匿名函数。语法如下:

    (Person person)—>person.getAge()>30

    Lambda表达式用—>连接,->左侧为函数的参数,->右侧为函数体。 

    若右侧由多条语句构成则需要用{}包裹,如:

    (Person person)—>{person.getAge()>30;System.out.println(person.getName());}

    Lambda表达式无需显示指定返回值类型,JVM会根据->右侧语句的返回结果自动判断返回值类型,如:

    (Person person)—>person.getAge()>30 #自动判断返回值为boolean型

    三、如何使用lambda

    1.为Lambda表达式定义函数式接口

    @FunctionalInterfaceinterface FilterProcessor<T>{

        boolean process(T t);

    }

    PS:该接口只能有一个抽象函数!接下来Lambda表达式就是该抽象函数的实现。 

    PS:在为Lambda表达式定义函数式接口时,需要加上注解@FunctionalInterface,这样当该接口中抽象函数个数不是1时就会报错提示。

    2.实现筛选函数

    List<T> filter(List<T> list, FilterProcessor<T> filterProcessor){

        List<T> result = new ArrayList<T>();

        if(filterProcessor.process(t))

            result.add(t);

        return result;

    }

    filter函数接收一个函数式接口,该参数用于接收一个Lambda表达式。

    3.传递Lambda表达式

    List<Person> result = filter(list, (Person p)->p.getAge()>30);

    直接将Lambda表达式作为参数传递给filter的函数式接口即可,从而在result中就能获取年龄超过30岁的Person对象。

    相关文章

      网友评论

          本文标题:Lambda表达式

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