Java的@Serial批注
JDK可能正在使用JDK 11 : @Serial獲得另一個標(biāo)準(zhǔn)(預(yù)定義)注釋 。 JDK-8202385 [“標(biāo)記與序列相關(guān)的字段和方法的注釋”]的目的是添加“某種“ SerialRelated”注釋,以促進對序列字段和方法的聲明的自動檢查。” 這種想法是為了更好地向開發(fā)人員指示與序列化相關(guān)的字段或方法的拼寫錯誤,類似于“使用java.lang.Override批注類型來指示編譯器應(yīng)驗證該方法實際上被覆蓋”的方式。
Joe Darcy 最近要求對“ webrev ”(建議的代碼添加) 進行審查 。 這提供了新@Serial外觀。 當(dāng)前的建議是將此注釋定義駐留在java.io包中 ,以特定的方法或字段為目標(biāo) ,并具有SOURCE 保留 。
對于@Serial的建議定義, Javadoc注釋當(dāng)前提供了有關(guān)如何使用此注釋的重要詳細(xì)信息。 此Javadoc還明確指定了預(yù)期使用@Serial進行注釋的方法和字段: writeObject() , readObject() , readObjectNoData() , writeReplace() , readResolve() , ObjectStreamField []和serialVersionUID 。
建議的@Serial批注將在執(zhí)行javac “ serial ” lint檢查時進行檢查。 在Darcy的電子郵件審核請求中對此進行了描述:
擬議的java.io.Serial批注類型旨在與javac的“串行” lint檢查的增強實現(xiàn)一起使用。 該工作將作為JDK-8202056的一部分單獨完成:“擴展串行警告以檢查與串行相關(guān)的方法的嚴(yán)重過載”。
有趣的是,該注解的名稱不一定要最終確定,盡管它似乎很可能會保留下來。 達西的電子郵件指出,還可以使用其他名稱,例如@Serialize和@SerialRelated 。
一個有趣的區(qū)別是, @Serial批注不能或不應(yīng)與Externalizable接口的某些方法和某些字段一起使用(擴展Serializable ),因為這些方法和字段未在Externalizable中使用 。 在這種區(qū)別的更多細(xì)節(jié)在核心庫-dev的相關(guān)信息提供053060 , 053061 , 053064和053067 。
在@Serial ,尚未正式為JDK 11計劃@Serial批注,但考慮到JDK-8202385的最新進展,它似乎可以及時在JDK 11版本中使用 。 除了此批注對實現(xiàn)自定義序列化的潛在用途之外,此批注的定義還將提供另一個示例,說明如何記錄任何自定義批注以使其正確使用。
翻譯自: https://www.javacodegeeks.com/2018/05/javas-serial-annotation.html
總結(jié)
以上是生活随笔為你收集整理的Java的@Serial批注的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 批量处理 示例_Java异常处
- 下一篇: 捷途旅行者中型 SUV 将于 9 月 2