首頁 > Java > java教程 > 我應該為我的 Java 程式碼選擇哪種'@NotNull”註解?

我應該為我的 Java 程式碼選擇哪種'@NotNull”註解?

Patricia Arquette
發布: 2024-12-30 19:31:09
原創
379 人瀏覽過

Which `@NotNull` Annotation Should I Choose for My Java Code?

如何為您的Java 程式碼選擇正確的@NotNull 註解

為了增強程式碼可讀性並防止NullPointerException,許多開發人員尋求利用工具例如IDE靜態分析和FindBugs。然而,等效的 @NotNull/@NonNull 註釋的激增可能令人望而生畏。本文深入研究了可用選項,以幫助您選擇最合適的選項。

等效註釋

以下列表提供了來自各種包的等效 @NotNull 註釋:

  • javax.validation.constraints.NotNull(運行時驗證僅)
  • edu.umd.cs.findbugs.annotations.NonNull(FindBugs/SpotBugs)
  • org.jetbrains .annotations.NotNull(IntelliJ IDEA)
  • lombok.NonNull (Lombok 專案)
  • androidx.annotation.NonNull (Android.註解包)
  • org.eclipse.jdt.annotation.NonNull (Eclipse)

標準選擇

標準選擇

語法
  • 出於風格原因,請考慮避免與特定 IDE、框架或工具包相關的註解。這消除了以下情況選項:
  • android.support.annotation
  • edu.umd.cs.findbugs.annotations
  • org.eclipse.jdt.notation
  • 哦rg.jetbrains.annotations
org.checkerframework.checker.nullness.qual

lombok.NonNull

javax.annotation javax.validation.constraints?

比較javax.validation.constraints 和javax.annotation(需要額外的依賴項),顯示javax.annotation 的輕微偏好,因為它的

實現

  • 相似之處:
  • 所有@NonNull 註解都有一個簡單的實現,除了:
  • org .jetbrains.annotations(簡單實作)
javax.annotation(較長的實作)

javax.validation.constr aints(有執行時期註解的實作)

差異:執行時間註解(javax.annotation、javax.validation.constraints、 org.checkerframework.checker.nullness.qual) 提供額外的執行時間檢查,但影響小於預期。

可用上下文
  • 註釋在其可用上下文中有所不同:
一些遵循 JLS 9.6.4.1樣式上下文(android.support.annotation、edu.umd.cs.findbugs.annotations、org.jetbrains.annotation、lombok、javax.validation.constraints)。

其他在所有 JLS 上下文上啟用註解(lombok、 org.jetbrains.annotations)。

結論

根據討論的標準,@NotNull 註解的實用選擇是 javax.annotation.Nonnull。它的簡潔性、運行時註解以及與 JLS 上下文的兼容性為可讀性、靜態分析和運行時檢查提供了平衡的解決方案。

以上是我應該為我的 Java 程式碼選擇哪種'@NotNull”註解?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板