结论以及Java的未来
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结论以及Java的未来相关的知识,希望对你有一定的参考价值。
《Java8实战》读书笔记14:第 16 章 结论以及Java的未来
本章内容
Java 8的新特性以及其对编程风格颠覆性的影响
由Java 8萌生的一些尚未成熟的编程思想
Java 9以及Java 10可能发生的变化
16.1 回顾 Java 8 的语言特性
- CUP单核已现瓶颈,
多核是趋势
。如何利用好多核进行并发
运算,自然也就是趋势
。 - 更简洁地调度以显示风格(
函数式
)处理数据的数据集合是趋势
。
16.1.1 行为参数化(Lambda 以及方法引用)
传递一个Lambda表达式,即一段精简的代码片段,比如
apple -> apple.getWeight() > 150
传递一个方法引用,该方法引用指向了一个现有的方法,比如这样的代码:
Apple::isHeavy
Lambda
与全新的Stream API
相结合,新一代Java核心
。Java8
这个函数式接口
的补丁打得很真牛。毕竟考虑到兼容性问题,没有加新语法。- 从另一个角度来说,
函数式接口
:Function<T, R>、Predicate<T>、BiFunction<T, U, R>
比起Scala
的函数类型
写法(入参) => 返回值
还是丑了些。
16.1.2 流
对于集合功能的拓展,Java8 遵守了开闭原则,引入了一套全新的 Stream API
。
- 与
Lambda
配合。采用延迟算法
以流水线
的方式处理数据。 - 以内部迭代,替换老式的外部迭代。
- 使用
并行流
开启并行计算超简单。(但也要符合:对象的可变
、函数无副作用
)
16.1.3 CompletableFuture
Java 5
提供了 Future
接口 Java8
提供了其实现类 CompletableFuture
。
CompletableFuture
提供了像 thenCompose、thenCombine、allOf
这样的操作。
详见:《Java8实战》读书笔记10:组合式异步编程 CompletableFuture
16.1.4 Optional
- 将传统的
显示判空
用统一接口封装为隐式判空
。统一的相关操作如:map、filter、ifPresent、orElseGet
等。 - 书中推荐所有业务可为空的对象都用
Optional<T>类
封装。 - 个人建议:遵守项目规范,除非你说了算。
16.1.5 默认方法
就是个补丁
,解决接口无法扩展的问题。
还引出了多继承问题。好在也不复杂,系统能判断的就自己找继承谁了,判断不了的需要显示调用。比如要用父接口B
中的方法:父接口B.super.hello();
16.2 Java 的未来
但今天已经是 2022-07-08 了。
以上是关于结论以及Java的未来的主要内容,如果未能解决你的问题,请参考以下文章