HOWTO · Java

Java - NotNull-Anmerkung im Methodenargument verwenden

Dieses Tutorial informiert über die Annotation @NotNull und zeigt, wie wir sie in Methodenargumenten in Java verwenden können.

Auf dieser Seite

Verwenden Sie @NotNull für ein Methodenargument eines Referenztyps, um zu dokumentieren, dass Aufrufende einen Wert übergeben sollen. Die Annotation beschreibt einen Vertrag; für sich genommen weist sie null jedoch nicht zurück und führt keine Validierung aus. Dieses Beispiel zeigt die Deklaration und erläutert, was eine zusätzliche Durchsetzung des Vertrags bedeutet.

Was ist die Annotation @NotNull?

@NotNull ist eine Annotation, mit der Java-Bibliotheken ausdrücken, dass ein Wert nicht null sein soll. Sie kann einen API-Vertrag im Quellcode, in der Dokumentation und in Werkzeugen, die die jeweilige Annotation unterstützen, leichter erkennbar machen. Das genaue Paket und Verhalten hängen von der bereitstellenden Bibliothek ab. Verwenden Sie daher die Annotation, die Ihr Projekt unterstützt, statt anzunehmen, dass jede @NotNull-Annotation gleich implementiert ist.

Eine Annotation verändert weder das Typsystem von Java noch verhindert sie, dass eine Variable null enthält. Sie garantiert auch nicht, dass eine Methode einen Wert ungleich null zurückgibt oder dass die Übergabe von null eine Ausnahme auslöst. Für eine Durchsetzung zur Laufzeit ist ein separater Mechanismus erforderlich, der so konfiguriert ist, dass er den annotierten Wert prüft oder validiert. Dieser Mechanismus und sein Verhalten liegen außerhalb dieses Beispiels, das nur die Deklaration zeigt.

Der wichtigste Vorteil ist die klarere Kommunikation zwischen der Person, die die Methode schreibt, und ihren Aufrufenden. Ein sichtbarer Vertrag, dass ein Wert nicht null sein soll, hilft beim Verständnis der vorgesehenen Eingabe und kann passende statische Analysewerkzeuge oder Frameworks unterstützen. Die Annotation ist eine nützliche Dokumentation, ersetzt aber keine Eingabeprüfungen, wenn die Anwendung eine Durchsetzung benötigt.

@NotNull für Methodenargumente verwenden

Setzen Sie die Annotation direkt vor einen Parameter eines Referenztyps, zum Beispiel String. Die folgende Deklaration dient nur zur Veranschaulichung; wählen Sie den Import und die Bibliothek, die Ihr Projekt verwendet:

public void createUser(@NotNull String username) { ... }

username ist hier das Methodenargument. @NotNull drückt aus, dass Aufrufende einen String ungleich null übergeben sollen. String ist ein Referenztyp und kann in Java daher null erhalten, sofern keine separate Prüfung oder ein konfigurierter Mechanismus den Wert zurückweist. Primitive Typen wie int können keinen Wert null erhalten und eignen sich deshalb nicht, um diesen Vertrag zu veranschaulichen.

Wenn Ihr Projekt eine Durchsetzung benötigt, konfigurieren und verwenden Sie einen Mechanismus, der die ausgewählte Annotation unterstützt. Allein durch den Import der Annotation oder ihre Verwendung am Parameter findet keine Validierung statt. Für die obige Deklaration sind weder eine Abhängigkeit noch ein Provider, ein Aufrufpfad oder ein Laufzeitergebnis festgelegt. Diese Entscheidungen unterscheiden sich je nach Projekt und werden hier nicht behandelt.

Der Vertrag macht die Absicht leichter überprüfbar und wartbar. Aufrufende sollten einen gültigen Benutzernamen übergeben; bei Bedarf kann die Methode weiterhin eigene Eingabeprüfungen durchführen. Verwenden Sie im gesamten Codebestand dasselbe Annotationspaket, denn gleichnamige Annotationen können aus unterschiedlichen Bibliotheken stammen und von unterschiedlichen Werkzeugen unterstützt werden.