花了一个多星期的时间把Java 8 实战过了一遍, 我发现计算机的书, 其实都相当于字典的性质, 只是让你了解有这方面的技术, 真正要用到了, 还是要具体看如何编写. 每本书都是一个字典.

现在就提纲挈领再来过一遍, 然后尽量在之后的代码中, 使用这些新特性

  1. lambda表达式
  2. 默认方法
  3. Optional对象
  4. CompletableFuture
  5. 新的时间API

lambda表达式

lambda 表达式可以用于传递行为给代码, 其本质是对匿名对象的简写. 方法引用是lambda表达式的一种简便使用方法, 有三种.

函数式接口和java.util.functions中的各种接口可以直接拿来使用, 也可以根据需要自己实现泛型的这些接口.

注意在策略模式中使用lambda表达式, 或者将策略代码柯里化以达到减少代码重复的目的.

在处理顺序数据或者是集合的时候, 只要用到迭代的地方, 都要想到优先改成流模式. 还要注意flatMap和分组的使用, 都可以让流更加好用.

默认方法

默认方法让一个接口代表一套易于扩展的完整功能变成了可能. 如果自行编写接口的话, 注意可以适当的编写默认方法.

如果自己编写了一个数据结构的类, 可以考虑编写一个接口来将工具方法放入其中.

注意默认方法解决冲突的规则: 类中的方法优先, 然后是最详细的接口中的方法优先, 如果手工指定, 需要使用接口名.super.方法名来具体指定.

Optional对象

在处理流的部分, 很多时候会使用到Optional对象, 如果处理可能为null的引用, 优先考虑使用Optional类.

CompletableFuture

这部分没有详细看, 是对Future的增强, 在需要多个Future对象协同工作的时候可以考虑, 另外反射式的Web编程后续还需要学习.

新的时间API

在使用时间的时候, 优先考虑LocalDate, LocalTime, Instant, Duration 和 Period类, 在需要时间片段的时候可以应用Duration的静态方法.

后记

后记感觉不应该是后记, 而是后继...后续还要继续看Java 9, 11.....