• Java8新特性盘点


    1、Lambda表达式

    设计目的:Lambda表达式是为改善匿名类的臃肿而设计,同时带来函数式编程。

    使用场景:函数式接口就是只定义一个抽象方法的接口,凡是需要函数式接口的地方,都可以用lambda表达式以内联的形式法提供实现。

    结果:有了lambda可以很方便的把函数(代码)当做参数,也就实现了“行为参数化”,可以很好的应对对于行为有变化的需求,有点类似策略模式。

    JDK自定了很多函数式接口,大部分情况下无需自定义,拿来使用。比如Predicate、Consumer、Function。
     
    类型推断:Lambda的类型是从使用Lambda的上下文推断出来的,是要入参、返回值符合接口即可。这意味着同样的 Lambda,可以用在不同的函数式接口。

    2、方法引用

    你为什么应该关心方法引用?方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷写法。它的基本思想是,如果一个Lambda代表的只是“直接调用这个方法”,那最好还是用名称来调用它,而不是去描述如何调用它。事实上,方法引用就是让你根据已有的方法实现来创建Lambda表达式。但是,显式地指明方法的名称,你的代码的可读性会更好。
    方法引用主要有三类。
    (1) 指向静态方法的方法引用(例如Integer的parseInt方法,写作Integer::parseInt)。
    (2) 指 向 任意类型实例方法 的方法引用(例如 String 的 length 方法,写作
    String::length)。
    (3) 指向现有对象的实例方法的方法引用(假设你有一个局部变量expensiveTransaction
    用于存放Transaction类型的对象,它支持实例方法getValue,那么你就可以写expensive
    Transaction::getValue)。

    3、流

     可以看成集合的可以自定义操作的迭代器。这个自定义操作就是一个函数式接口,所以你可以使用lambda。

    使用流可以避免使用传统for循环来处理集合,比如在内存中对一个list按照一个维度进行分组,分组内要排序等等。传统的api写出来的代码很臃肿。

    4、Optional

    可以通过使用这个类“强制”自己处理空指针的情况,进而避免空指针异常,同时代码看起来优雅很多。

    5、CompletableFuture

    增强了 Future

    6、新的日期API

    处理时区也变的简单,可惜mybatis等ORM框架尚未支持。
  • 相关阅读:
    软件对标分析
    第一阶段绩效评估
    自律小帮手:Alpha版使用说明
    团队 电梯演讲 原型展示
    意见评论
    Alpha版(内部测试版)发布
    意见汇总
    产品对比
    团队项目-第二阶段冲刺-3
    团队项目-第二阶段冲刺-2
  • 原文地址:https://www.cnblogs.com/flyfeifei66/p/11276533.html
Copyright © 2020-2023  润新知