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
374 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!

sumber:php.cn
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