美文网首页
java8 之 Lambda表达式

java8 之 Lambda表达式

作者: 0爱上1 | 来源:发表于2018-06-15 17:46 被阅读16次

    定义:

        什么是lambda表达式?可以理解为一种特殊的匿名内部类。在日常编码中,如果你需要有一个函数,但是又不想费神的去命名一个函数的情况下使用它,那这就是匿名函数。

    使用场景:

        只有是函数式接口的才可以使用,而函数式接口即是指接口中之定义了一个抽象方法的接口(Object中的方法除外),即一个接口中只有一个函数需要被实现的,我们称为“函数式接口

    作用:

        简化代码,对比传统的java对于一个接口的实现,会发现要么采用定义一个实现类的方式,要么就采用匿名内部类的形式,比如我们的Thread类

    1 2

    代码简介一目了然...

    日常开发使用:

        1:配合jdk8提供的 java.util.function 包下定义的常用函数接口,如

        Predicate

        Consumer

        Function

        等定义好的函数接口,可以使用,我们可以看下他们的定义,看一个函数式接口,主要是看其唯一抽象方法(需要被实现的方法)的入参和出参即可,其方法名不重要。

    3

        2:优化集合操作

        使用Iterable 接口的foreach方法时,传入Consumer<? super T> action 函数式接口,可以使用lambda表达式简化代码

        尽量集合操作使用jak8新增的Stream 流接口操作集合。

    4

    而Stream流接口中的方法几乎都需要传入函数接口,从而可以利用lambda简化我们操作集合的代码。而且还支持并发操作集合。

    5

    更简洁一步:

    如果我们的lambda方法体中仅仅是调用已有的方法,比如:System.out.println();有没有更简洁的写法呢?别急,java8提供了方法引用来满足我们的小期望。

    方法引用:

        Method Reference:用已有的方法来替换lambda表达式,从而实现更简洁的代码规范。

        写法:大概分为两类,对象调用;类调用

        对象调用: Object :: methodName

        类调用: Class :: staticMethod

    如:System.out::println;  注意没有括号。

    null的优雅处理:

        利用lambda表达式,配合使用Optional<T> 可以使Java对于null的处理更为优雅。下面简单介绍一下。

        我们知道,jdk8在 util包下提供了一个叫做Optional的类,用于优化处理null,但是实际的使用中发现,我们的工作了好像多了一步

    6 7

        利用Optional + lambda表达式的方式简化代码

    8
    9

        连续if判断优化

    10

            lambda表达式这么优雅,以后多用吧

    相关文章

      网友评论

          本文标题:java8 之 Lambda表达式

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