Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

SpotBugs

Verwendung der “null”-Annotations

In Java-Projekten ist es wichtig, potenzielle NullPointerExceptions zu vermeiden, die durch unsachgemäßen Umgang mit null-Werten entstehen können. Die Verwendung von Null-Annotations wie denen von JetBrains bietet dabei eine einfache Möglichkeit, solche Probleme frühzeitig zu erkennen und entsprechende Warnungen durch Tools wie SpotBugs zu erhalten.

Abhängigkeit

Die notwendigen Annotations sind u.a. in der Library von JetBrains

<dependency>
    <groupId>org.jetbrains</groupId>
    <artifactId>annotations</artifactId>
    <version>${jetbrains.annotations.version}</version>
    <scope>compile</scope>
</dependency>

Verwendung der Annotations im Code

Nachdem die Bibliothek im Projekt verfügbar ist, können die Annotationen @Nullable und @NotNull festlegen, ob Methoden, Parameter oder Variablen null akzeptieren dürfen.

@NotNull

Die @NotNull-Annotation wird verwendet, um eindeutig festzulegen, dass ein Parameter, eine lokale Variable, ein Feld oder eine Methode niemals den Wert null annehmen darf. Dies ist besonders wichtig für Methoden, die keine null-Werte verarbeiten können, da es ansonsten zu einer NullPointerException kommen könnte. Mithilfe dieser Annotation können Entwicklungsumgebungen und statische Code-Analyse-Tools wie SpotBugs oder IntelliJ IDEA frühzeitig auf potenzielle Verstöße gegen diese Bedingung hinweisen.

Anwendungsbeispiele für @NotNull:

  • Methodenparameter: Stellt sicher, dass übergebene Argumente nicht null sind.
  • Methodenrückgabetyp: Garantiert, dass Methoden niemals null zurückgeben.
  • Felder: Verhindert, dass Klassenfelder den Wert null annehmen können.

@Nullable

Die @Nullable-Annotation kennzeichnet explizit Variablen, Parameter, Felder oder Methoden, die null zurückgeben oder akzeptieren dürfen. Damit wird eindeutig dokumentiert, dass die betreffenden Elemente für die Verwendung mit potenziellen Nullwerten geeignet sind. Entwickler sollten immer entsprechende Null-Prüfungen durchführen, um mögliche NullPointerExceptions zu vermeiden.

Typische Anwendungsbeispiele für @Nullable:

  • Methodenparameter: Ermöglicht explizit, dass übergebene Argumente den Wert null annehmen können.
  • Methodenrückgabetyp: Signalisiert, dass eine Methode möglicherweise null zurückliefert, und fordert den Aufrufer dazu auf, dies zu berücksichtigen.
  • Felder: Kennzeichnet Felder, die explizit den Wert null enthalten dürfen.

Allgemeine Richtlinien

  • Konsistente Verwendung: @Nullable und @NotNull einheitlich im gesamten Projekt nutzen.
  • Integration mit Tools: Entwicklungswerkzeuge und statische Analyse einsetzen, die diese Annotationen auswerten.
  • Dokumentation: Im Team klären, was die Annotationen bedeuten und wo sie Pflicht sind.

Die konsequente Nutzung von @NotNull und @Nullable macht Null-Verträge sichtbar und reduziert Laufzeitfehler. JetBrains-Annotations sind eine gängige Wahl; Alternativen sind JSR-305 oder jakarta.annotation. SpotBugs wertet je nach Konfiguration nicht jede Variante gleich aus.

Ergebnis der Analyse

Das Ergebnis der SpotBugs-Analyse wird nach Abschluss im Verzeichnis target/spotbugsXml.xml abgelegt.

Um die Lesbarkeit der Datei zu verbessern, empfiehlt es sich, die Datei automatisch von der Entwicklungsumgebung formatieren zu lassen.