2013-06-05 6 views
6

Eclipse hat die Annotation @NonNullByDefault, die alle Werte als @NonNull behandelt, sofern Sie sie nicht explizit als @Nullable annotieren.Gibt es in IDEA eine Annotation @NonNullByDefault?

Gibt es in IntelliJ IDEA eine gleichwertige Option, oder müssen Sie immer @Nonnull verwenden?

+1

Ist das nicht '@ Nonnull' statt (JSR 305)? IDEA kann '@ NotNull' verwenden, aber dies ist eine andere Anmerkung. – fge

+0

@fge Danke, ich habe es behoben. –

+0

Übrigens, was würden Sie von dieser Anmerkung machen? Ist das für statische Quellcodeanalyse? IDEA kann FindBugs verwenden, dafür gibt es ein Plugin. Zur Verwendung dieser Anmerkungen befolge ich Guices Ratschlag: Methodenparameter dürfen nicht null sein, wenn sie nicht mit '@ Nullable' versehen sind. Aber das ist eine Frage der Politik ... – fge

Antwort

3

Nein, es wird derzeit von IDEA nicht unterstützt.

Als Beweis, siehe Lena Link über die offene Feature-Anfrage an allow 'NotNull' as the default element behavior for a given class or package.

Möglicherweise wird ein ähnliches Merkmal Standard mit JSR-305 werden, die die @ParametersAreNonnullByDefault Annotation und auch die entgegengesetzte Annotation @ParametersAreNullableByDefault enthalten kann. Beachten Sie, dass Rückgabewerte im Gegensatz zu @NonNullByDefault nicht von diesen beiden Anmerkungen abgedeckt werden. Sie mussten also den Rückgabewert explizit annotieren.

All dies ändert jedoch nicht den aktuellen Zustand. Weder ist JSR-305 ein Standard, noch implementiert IDEA es.

+2

IDEA unterstützt nun @ParametersAreNonnullByDefault: http://www.jetbrains.com/idea/webhelp/@parametersarenonnullbydefault-annotation.html –

+0

^Link im Kommentar ist gebrochen ... das funktioniert (für jetzt ...): https://www.jetbrains.com/help/idea/2017.1/parametersarenonnullbydefault-annotation.html – Lambart

7

Idea-Version 14 enthält Unterstützung für die JSR 305-Annotation "@TypeQualifierDefault", mit der der Benutzer eine benutzerdefinierte Annotation erstellen kann, die in einer Paketdeklaration in einer package-info.java-Datei verwendet wird In diesem Paket (nicht nur Parameter, sondern auch Methodenrückgabewerte, lokale Variablen usw.) werden implizit Annotationen vorgenommen, die keine Nullwerte zulassen.

Leider wirkt sich dies (derzeit) nicht rekursiv auf Unterpakete aus. Daher muss jedes Unterpaket auch eine package-info.java-Datei enthalten, die dieses Unterpaket zur Verwendung der Anmerkung deklariert.

Siehe hier für weitere Details und ein Beispiel für die Verwendung:

http://youtrack.jetbrains.com/issue/IDEA-125281

Beachten Sie, dass dies bereits in Early Access Programm implementiert wird (EAP) aufbaut.