笔记来源:《Java实战(第2版)》ISBN:978-7-115-52148-4 作者:拉乌尔·加布里埃尔·乌尔玛,马里奥·富斯科,艾伦·米克罗夫特.
21.1 回顾 Java 8 的语言特性
21.1.1 行为参数化(Lambda 以及方法引用)
21.1.2 流
21.1.3 CompletableFuture
21.1.4 Optional
21.1.5 Flow API
21.1.6 默认方法
21.2 Java 9 的模块系统
- 可靠的配置—通过显式声明模块的依赖性,错误可以在很早的时候,就借由编译检测到,而不必等到运行时发生了依赖缺失、依赖冲突,或者循环依赖才发现。
- 严格的封装—Java模块系统可以设置只导出某几个包,对模块的公有访问、每个模块的访问边界以及内部实现进行区分。
- 改进的安全性—由于用户无法随心所欲地调用模块的组成部分,因此攻击者想要攻破由模块系统实现的安全控制将更加困难。
- 更好的性能—如果一个类只能被有限的组件访问,而不是任何类都能在运行时加载它,那么对这样的类进行的很多优化都会更加有效。
- 扩展性—Java模块系统可以将JavaSE平台解构成更细粒度的组成部分,你可以选择只执行运行你的应用所需要的特性。
21.3 Java 10 的局部变量类型推断
21.4 Java 的未来
21.4.1 声明处型变
21.4.2 模式匹配
21.4.3 更加丰富的泛型形式
21.4.4 对不变性的更深层支持
Java 8 只支持三种类型的值,分别是:
- 基本类型值;
- 指向对象的引用;
- 指向函数的引用。
transitively_final
- 该关键字用于修饰引用类型的字段,确保无论是对该字段本身直接的修改,还是对通过该字段能直接或间接访问到的对象的修改都不会发生。
- Java 8 没有 transitively_final 关键字
21.4.5 值类型
- 对于基本变量,特征比较采用的是逐位比较
- 对于对象类型它采用的是引用比较