第1章 为什么要关心Java8

Java8引入新的特性,使编程优雅。

  1. Stream API;
  2. lambda表达式;
  3. 接口中的默认方法;
Collections.sort(inventory, new Comparator<Apple>() {
      public int compare(Apple a1, Apple a2){
          return a1.getWeight().compareTo(a2.getWeight());
      }
  });

函数式编程:将代码传递给方法,并且返回代码的功能。

inventory.sort(comparing(Apple::getWeight))

Java8引入新的特性,使编程容易。

关于并发编程

  1. Java 1.0提供了一个内存模型,包含线程和锁;
  2. Java 5添加了线程池和并发集合;
  3. Java 7添加了分支/合并(fork/join)框架;
  4. Java 8提供了并行流;

1.1 Java怎么还在变

1.1 Java怎么还在变

1.2 Java中的函数

1.2 Java中的函数

1.3 流

1.3 流

1.4 默认方法

Java8为了支持接口兼容性扩充,加入了默认方法,例如Collection接口的stream或parallelStream方法。

加入默认方法的设计思考

  1. 在接口中增加方法定义,需要更改所有具体子类,增加方法实现,不添加则会编译报错;
  2. Java官网开发者无法控制外部库实现,且这会破坏java向前兼容的承诺;
  3. Java8增加默认方法,在接口中包含已提供实现的方法;
  4. 由于类可以实现多个接口,当不同接口带有相同方法签名的默认方法,会导致菱形继承问题继承,通过子类显示指定确定确定。
  5. 不加入默认方法的代替实现:静态类方法
    • 优点:维护了接口的概念定义,不带有任何实现;
    • 缺点:每个库集中维护静态类,与接口定义分散;

1.5 来自函数式编程的其他好思想

前面聚焦函数式编程的两个核心思想:没有共享的可变数据行为参数化

其他好思想:

  1. 值对象Optional避免NPE;
  2. (结构)模式匹配表达编程思想;(todo:这个我忘记具体含义了,看完再回来补充!)

1.6 小结

本章中的关键概念。

  • 语言生态系统不断更替,Java需要与时俱进,保持活力;
  • Java 8中新增概念和功能,便于编写既有效又简洁的程序;
  • 函数成为一等值,通过方法引用和Lambda作为函数式值传递;
  • Java 8中Streams的概念拓展了Collections,使代码更为易读,更容易并行处理流元素;
  • 在接口中使用默认方法,在实现类没有实现方法时提供方法内容;
  • 其他来自函数式编程的有趣思想,包括处理null和使用模式匹配。

引用

  1. Java 8实战
posted @ 2023-06-10 16:41  蒋智  阅读(14)  评论(0)    收藏  举报