一艘希、長期支持版本
long term support會一直保持維護(hù)
二皿哨、Record(Since JDK16)
Record由于不可變性幫助我們安全解決改變屬性導(dǎo)致BUG于样,同時(shí)不可變性對于編譯器也很友好
看上去像一個(gè)方法,實(shí)際是一個(gè)定義
最常見的用法
三笙蒙、Sealed Class/Interface(Since JDK17)
Library開發(fā)者定義了一個(gè)接口,但是無法控制別人怎么實(shí)現(xiàn)這個(gè)接口而導(dǎo)致BUG????
3.1)游戲開發(fā)者限定角色場景
Ps:很多框架比如Mybatis聚唐、Spring有一些API只是開發(fā)團(tuán)隊(duì)自己想用的丐重,但沒有Sealed之前很多都是public的接口,在框架進(jìn)行大版本的更新時(shí)使用者可能會因?yàn)閷χ鞍姹镜腁PI進(jìn)行了接口的自定義實(shí)現(xiàn)而導(dǎo)致兼容性問題
這些限定類是ADT(代數(shù)系統(tǒng)大懈瞬椤)扮惦,可以計(jì)算所有不同組合數(shù),比如Character只會有Warriors亲桦、Wizard崖蜜、Thief三種相加可能范圍,而Warriors具有兩個(gè)int屬性會有21億平方的相乘可能范圍
3.2)Record結(jié)合Sealed——四則運(yùn)算
Record不可以繼承但可以implements
四客峭、CompletableFuture(Since JDK8)
CompletableFuture API分為以上三大類
有點(diǎn)像CPS豫领,CompletableFuture自己知道什么時(shí)候做完之后再去做你需要它執(zhí)行的內(nèi)容
上述代碼簡潔且語義清晰體現(xiàn)了依賴關(guān)系(join()類似get()只不過Exception不一樣)
五、PatternMatching for InstanceOf(Since JDK16)
InstanceOf只是PattenMatching的一小部分功能舔琅,強(qiáng)大的是它的解構(gòu)功能等恐,下圖為例假如匹配成功可以直接進(jìn)行各種操作不需要強(qiáng)轉(zhuǎn)
六、Switch expressions(Since JDK14)
七备蚓、小功能
teeing和map一樣可以無限用下去
方便直接從外部粘帖