往期熱門文章:
1、如何寫(xiě)出讓同事吐血的代碼?
2、遭棄用的 Docker Desktop 放大招!宣布支持 Linux
3、IDEA公司再發(fā)新神器!超越 VS Code 騷操作!
4、推薦好用 Spring Boot 內(nèi)置工具類
5、面試被問(wèn)SpringBoot自動(dòng)裝配原理,怎么破?
文 | 白開(kāi)水
出品 | OSC開(kāi)源社區(qū)(ID:oschina2013)Infoworld 消息指出,根據(jù) OpenJDK 提案,Java 將獲得通用泛型(universal generics),此舉旨在使該語(yǔ)言更易于使用。不過(guò)該規(guī)劃本身需要花費(fèi)數(shù)年時(shí)間才能實(shí)現(xiàn)。通用泛型最初將通過(guò) OpenJDK 社區(qū)中的三個(gè)提案來(lái)實(shí)現(xiàn)。甲骨文方面表示,這些提議將極大地改變 Java 語(yǔ)言和 JVM,結(jié)合類的靈活性和基元的性能。一切(包括基元)都將成為一個(gè)對(duì)象。但是所選擇的路徑并不會(huì)降低基元的性能,而是使類的性能與基元一樣。三個(gè) JDK Enhancement Proposals(JEP)中的每一個(gè)都提供了不同的功能,但想要達(dá)到預(yù)期的效果,則需要結(jié)合這三個(gè)提案。其中最主要的是一份于 2 月創(chuàng)建并于 10 月 29 日更新的 JEP 草案,它要求通過(guò)允許 Java 類型變量覆蓋這兩種類型來(lái)統(tǒng)一對(duì)泛型代碼中引用和原始值類型的處理。將會(huì)產(chǎn)生新的 warnings,以維護(hù)通用代碼的安全保證。使用用戶聲明的原始對(duì)象增強(qiáng) Java 對(duì)象模型的第二個(gè) JEP 將作為先決條件;計(jì)劃將基本基元與對(duì)象統(tǒng)一起來(lái)的第三個(gè) JEP,預(yù)計(jì)也會(huì)推進(jìn)。其他 JEP 則將隨之更新標(biāo)準(zhǔn)庫(kù)、解決 null warnings 和使庫(kù)為專業(yè)化做好準(zhǔn)備,并在 JVM 中引入通用 API 的運(yùn)行時(shí)專業(yè)化。通用泛型計(jì)劃提倡讓 generic API 直接支持 primitive value types,以便直接對(duì) custom-defined primitives 進(jìn)行操作;引用類型也將被支持。提案指出,理想情況下這應(yīng)該是 Java 泛型的默認(rèn)行為,這樣 primitive value types 就可以完全參與到 Java 生態(tài)系統(tǒng)中。目前還沒(méi)有確定通用泛型何時(shí)會(huì)出現(xiàn)在 Java 中,但預(yù)計(jì)仍需要很多年才能實(shí)現(xiàn)。且通用泛型將擴(kuò)展平臺(tái)中現(xiàn)有的泛型能力。2004年推出的 Java 2 Platform 和 Standard Edition 5.0 為語(yǔ)言和平臺(tái)帶來(lái)了泛型,允許開(kāi)發(fā)者識(shí)別他們想要存儲(chǔ)在集合中的內(nèi)容,并使迭代器類型安全。但在 2004 年的泛型迭代中,開(kāi)發(fā)者只能對(duì)引用類型進(jìn)行泛化。通過(guò)將基元與引用統(tǒng)一起來(lái),可以采取下一步措施,允許類型參數(shù)在所有類型上進(jìn)行范圍化。值得一提的是,Java 并不是唯一關(guān)注泛型功能的語(yǔ)言,Go 1.18 也計(jì)劃支持泛型。