第1章 为什么要关心Java8
Java8引入新的特性,使编程优雅。
- Stream API;
- lambda表达式;
- 接口中的默认方法;
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引入新的特性,使编程容易。
关于并发编程
- Java 1.0提供了一个内存模型,包含线程和锁;
- Java 5添加了线程池和并发集合;
- Java 7添加了分支/合并(fork/join)框架;
- Java 8提供了并行流;
1.1 Java怎么还在变
1.2 Java中的函数
1.3 流
1.4 默认方法
Java8为了支持接口兼容性扩充,加入了默认方法,例如Collection
加入默认方法的设计思考
- 在接口中增加方法定义,需要更改所有具体子类,增加方法实现,不添加则会编译报错;
- Java官网开发者无法控制外部库实现,且这会破坏java向前兼容的承诺;
- Java8增加默认方法,在接口中包含已提供实现的方法;
- 由于类可以实现多个接口,当不同接口带有相同方法签名的默认方法,会导致菱形继承问题继承,通过子类显示指定确定确定。
- 不加入默认方法的代替实现:静态类方法
- 优点:维护了接口的概念定义,不带有任何实现;
- 缺点:每个库集中维护静态类,与接口定义分散;
1.5 来自函数式编程的其他好思想
前面聚焦函数式编程的两个核心思想:没有共享的可变数据和行为参数化。
其他好思想:
- 值对象Optional
避免NPE; - (结构)模式匹配表达编程思想;(todo:这个我忘记具体含义了,看完再回来补充!)
1.6 小结
本章中的关键概念。
- 语言生态系统不断更替,Java需要与时俱进,保持活力;
- Java 8中新增概念和功能,便于编写既有效又简洁的程序;
- 函数成为一等值,通过方法引用和Lambda作为函数式值传递;
- Java 8中Streams的概念拓展了Collections,使代码更为易读,更容易并行处理流元素;
- 在接口中使用默认方法,在实现类没有实现方法时提供方法内容;
- 其他来自函数式编程的有趣思想,包括处理null和使用模式匹配。

浙公网安备 33010602011771号