Rumah > Java > javaTutorial > Anotasi `@NotNull` Mana Yang Harus Saya Pilih untuk Kod Java Saya?

Anotasi `@NotNull` Mana Yang Harus Saya Pilih untuk Kod Java Saya?

Patricia Arquette
Lepaskan: 2024-12-30 19:31:09
asal
459 orang telah melayarinya

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

Cara Memilih Anotasi @NotNull yang Betul untuk Kod Java Anda

Untuk meningkatkan kebolehbacaan kod dan menghalang NullPointerExceptions, banyak pembangun berusaha untuk memanfaatkan perkakas seperti analisis statik IDE dan FindBugs. Walau bagaimanapun, percambahan anotasi @NotNull/@NonNull yang setara boleh menjadi menakutkan. Artikel ini menyelidiki pilihan yang tersedia untuk membantu anda memilih yang paling sesuai.

Anotasi Setara

Senarai berikut menyediakan anotasi @NotNull yang setara daripada pelbagai pakej:

  • javax.validation.constraints.NotNull (pengesahan masa jalan sahaja)
  • edu.umd.cs.findbugs.annotations.NonNull (FindBugs/SpotBugs)
  • javax.annotation.Nonnull (JSR-305 tidak aktif)
  • org.jetbrains .anotasi.NotNull (IntelliJ IDEA)
  • lombok.NonNull (Projek Lombok)
  • androidx.annotation.NonNull (pakej anotasi Android)
  • org.eclipse.jdt.annotation.NonNull (Eclipse)

Kriteria untuk Pemilihan

Dengan JSR 305 tidak aktif, pilihan anotasi @NotNull melibatkan pendekatan pragmatik.

Sintaksis

Atas sebab gaya, pertimbangkan mengelakkan anotasi yang terikat pada IDE, rangka kerja atau kit alat tertentu. Ini menghapuskan perkara berikut pilihan:

  • android.support.anotation
  • edu.umd.cs.findbugs.anotation
  • org.eclipse.jdt.anotation
  • o rg.jetbrains.anotation
  • org.checkerframework.checker.nullness.qual
  • lombok.NonNull

javax.anotation atau javax.validation.constraints?

Membandingkan javax.validation.constraints dan javax.annotation, yang memerlukan kebergantungan tambahan, mendedahkan sedikit keutamaan untuk javax.annotation untuknya ringkasnya.

Pelaksanaan

Persamaan: Semua anotasi @NonNull mempunyai pelaksanaan yang remeh, kecuali:

  • org .jetbrains.anotasi (remeh pelaksanaan)
  • javax.annotation (pelaksanaan yang lebih lama)
  • javax.validation.constraints (pelaksanaan dengan anotasi masa jalan)

Perbezaan: Masa Jalan anotasi (javax.annotation, javax.validation.constraints, org.checkerframework.checker.nullness.qual) menyediakan semakan masa jalan tambahan tetapi mempunyai kesan yang kurang daripada yang dijangkakan.

Konteks Boleh Digunakan

Anotasi berbeza dalam konteks yang boleh digunakan:

  • Sesetengahnya mengikuti konteks gaya JLS 9.6.4.1 (android.support.annotation, edu.umd.cs.findbugs.annotations, org.jetbrains.annotation, lombok, javax.validation.constraints).
  • Lain-lain mendayakan anotasi pada semua konteks JLS (lombok, org.jetbrains.anotasi).

Kesimpulan

Berdasarkan kriteria yang dibincangkan, pilihan pragmatik untuk anotasi @NotNull ialah javax.annotation.Nonnull. Ringkasnya, anotasi masa jalan dan keserasian dengan konteks JLS menyediakan penyelesaian seimbang untuk kebolehbacaan, analisis statik dan semakan masa jalan.

Atas ialah kandungan terperinci Anotasi `@NotNull` Mana Yang Harus Saya Pilih untuk Kod Java Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan