一、长期支持版本

long term support会一直保持维护
二、Record(Since JDK16)

Record由于不可变性帮助我们安全解决改变属性导致BUG,同时不可变性对于编译器也很友好

看上去像一个方法,实际是一个定义

最常见的用法


三、Sealed Class/Interface(Since JDK17)

Library开发者定义了一个接口,但是无法控制别人怎么实现这个接口而导致BUG
3.1)游戏开发者限定角色场景


Ps:很多框架比如Mybatis、Spring有一些API只是开发团队自己想用的,但没有Sealed之前很多都是public的接口,在框架进行大版本的更新时使用者可能会因为对之前版本的API进行了接口的自定义实现而导致兼容性问题
这些限定类是ADT(代数系统大小),可以计算所有不同组合数,比如Character只会有Warriors、Wizard、Thief三种相加可能范围,而Warriors具有两个int属性会有21亿平方的相乘可能范围
3.2)Record结合Sealed——四则运算

Record不可以继承但可以implements
四、CompletableFuture(Since JDK8)

CompletableFuture API分为以上三大类

有点像CPS,CompletableFuture自己知道什么时候做完之后再去做你需要它执行的内容



上述代码简洁且语义清晰体现了依赖关系(join()类似get()只不过Exception不一样)
五、PatternMatching for InstanceOf(Since JDK16)

InstanceOf只是PattenMatching的一小部分功能,强大的是它的解构功能,下图为例假如匹配成功可以直接进行各种操作不需要强转

六、Switch expressions(Since JDK14)


七、小功能







teeing和map一样可以无限用下去

方便直接从外部粘帖