Heim > Java > javaLernprogramm > Welche „@NotNull'-Annotation sollte ich für meinen Java-Code wählen?

Welche „@NotNull'-Annotation sollte ich für meinen Java-Code wählen?

Patricia Arquette
Freigeben: 2024-12-30 19:31:09
Original
378 Leute haben es durchsucht

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

So wählen Sie die richtige @NotNull-Annotation für Ihren Java-Code aus

Um die Lesbarkeit des Codes zu verbessern und NullPointerExceptions zu verhindern, versuchen viele Entwickler, Tools zu nutzen wie statische IDE-Analyse und FindBugs. Allerdings kann die Verbreitung äquivalenter @NotNull/@NonNull-Annotationen entmutigend sein. In diesem Artikel werden die verfügbaren Optionen erläutert, um Ihnen bei der Auswahl der am besten geeigneten Option zu helfen.

Äquivalente Anmerkungen

Die folgende Liste enthält äquivalente @NotNull-Anmerkungen aus verschiedenen Paketen:

  • javax.validation.constraints.NotNull (Laufzeitvalidierung nur)
  • edu.umd.cs.findbugs.annotations.NonNull (FindBugs/SpotBugs)
  • javax.annotation.Nonnull (JSR-305 inaktiv)
  • org.jetbrains .annotations.NotNull (IntelliJ IDEA)
  • lombok.NonNull (Projekt Lombok)
  • androidx.annotation.NonNull (Android-Annotationspaket)
  • org.eclipse.jdt.annotation.NonNull (Eclipse)

Kriterien zur Auswahl

Wenn JSR 305 inaktiv ist, erfordert die Auswahl der @NotNull-Annotation einen pragmatischen Ansatz.

Syntax

Aus stilistischen Gründen Erwägen Sie, Anmerkungen zu vermeiden, die an bestimmte IDEs, Frameworks oder Toolkits gebunden sind. Dadurch entfällt Folgendes Optionen:

  • android.support.annotation
  • edu.umd.cs.findbugs.annotations
  • org.eclipse.jdt.annotation
  • O rg.jetbrains.annotations
  • org.checkerframework.checker.nullness.qual
  • lombok.NonNull

javax.annotation oder javax.validation.constraints?

Der Vergleich von javax.validation.constraints und javax.annotation, die zusätzliche Abhängigkeiten erfordern, zeigt eine leichte Präferenz für javax.annotation Kürze.

Implementierung

Ähnlichkeiten: Alle @NonNull-Annotationen haben eine triviale Implementierung, außer:

  • org .jetbrains.annotations (trivial Implementierung)
  • javax.annotation (längere Implementierung)
  • javax.validation.constraints (Implementierung mit Laufzeitannotation)

Unterschiede: Laufzeit Anmerkungen (javax.annotation, javax.validation.constraints, org.checkerframework.checker.nullness.qual) bieten zusätzliche Laufzeitprüfungen, haben aber weniger Auswirkungen als erwartet.

Verwendbare Kontexte

Annotationen unterscheiden sich in ihre verwendbaren Kontexte:

  • Einige folgen JLS 9.6.4.1 Stilkontexte (android.support.annotation, edu.umd.cs.findbugs.annotations, org.jetbrains.annotation, lombok, javax.validation.constraints).
  • Andere ermöglichen die Annotation für alle JLS-Kontexte (Lombok, org.jetbrains.annotations).

Fazit

Basierend auf den besprochenen Kriterien ist die pragmatische Wahl für eine @NotNull-Annotation javax.annotation.Nonnull. Seine Kürze, Laufzeitannotation und Kompatibilität mit JLS-Kontexten bieten eine ausgewogene Lösung für Lesbarkeit, statische Analyse und Laufzeitprüfungen.

Das obige ist der detaillierte Inhalt vonWelche „@NotNull'-Annotation sollte ich für meinen Java-Code wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage