zoukankan      html  css  js  c++  java
  • JDK1.8新特性(一)

    常接触的新特性有以下几种:

    1.Lambda 表达式 − 可以取代大部分的匿名内部类,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构

      注意:并不是所有的接口都可以使用Lambada表达式来简化,只有函数式接口。

      规定:接口中只能有一个需要被实现的方法,而不是规定接口中只能有一个方法!(PS:因为1.8中多了一个修饰符:default,使得接口中的方法是可以有默认实现的,所以接口可以有多个方法,但只有一个需要被实现,若有其他的必须得有默认实现。)也就是函数式接口。

      语法: () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)。

    2.函数式接口(Functional Interface)-就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

      有一个很重要的注解@FunctionalInterface,修饰函数式接口的,要求接口中的抽象方法只有一个。 这个注解往往会和 lambda 表达式一起出现。

    3.默认方法default-被 default 修饰的方法会有默认实现,不是必须被实现的方法,所以不影响 Lambda 表达式的使用。

    4.Stream流-将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

      

    +--------------------+       +------+   +------+   +---+   +-------+
    | stream of elements +-----> |filter+-> |sorted+-> |map+-> |collect|
    +--------------------+       +------+   +------+   +---+   +-------+
    

      这个流程对应Java代码:

    List<Integer> transactionsIds = 
    widgets.stream()
                 .filter(b -> b.getColor() == RED)
                 .sorted((x,y) -> x.getWeight() - y.getWeight())
                 .mapToInt(Widget::getWeight)
                 .sum();
    

    5.Optional 类-用来解决空指针异常。

    6.方法引用-减少了冗余代码,代码更加简洁

      方法引用符号 ::

      使用可以有几种情况:

        构造器引用:语法为Class<T>::new

        静态方法引用:语法为Class::static_method

        特定类的任意对象的方法引用:语法为Class::method 

        特定对象的方法引用:语法为instance::method 

  • 相关阅读:
    自动检查出修改的代码 shell 做升级包 供观摩
    mysql 复制数据库
    docker 容器 日志占用空间过大问题处理
    react native ios启动指定模拟器
    React-Native Navigator-this.props.navigation....
    react-native 适配问题
    vsCode 开发微信小程序插件
    React-Native Navigator 过渡动画卡顿的解决方案
    JavaScript运行机制
    npm install Unexpected token in JSON at position XXX
  • 原文地址:https://www.cnblogs.com/xk920/p/13800601.html
Copyright © 2011-2022 走看看