2013-06-05 32 views
6

Eclipseには、@Nullableと明示的に注釈を付けない限り、すべての値が@NonNullとして扱われる@NonNullByDefault注釈があります。IDEAに@NonNullByDefaultアノテーションがありますか?

IntelliJ IDEAには同等のオプションがありますか、または常に@Nonnullを使用する必要がありますか?

+1

代わりに '@ Nonnull'(JSR 305)ではありませんか? IDEAは '@ NotNull'を使うことができますが、これは別の注釈です。 – fge

+0

@fgeありがとう、私はそれを修正しました。 –

+0

ところで、その注釈はどのように使用しますか?それは静的なソースコードの分析ですか? IDEAはFindBugsを使用することができます。それにはプラグインがあります。これらの注釈を使うことに関して、私はGuiceの助言に従っています。メソッドのパラメータは、 '@ Nullable'で注釈を付けない限りnullにはなりません。しかし、それはポリシーの問題です... – fge

答えて

3

いいえ、現在IDEAではサポートされていません。

オープン機能のリクエストについてのlenaのリンクallow 'NotNull' as the default element behavior for a given class or packageを参照してください。

類似の機能は、@ParametersAreNonnullByDefault注釈と、反対の注釈@ParametersAreNullableByDefaultを含めることができるJSR-305と標準になります。 @NonNullByDefaultとは対照的に、戻り値はこれらの2つのアノテーションでカバーされていません。だから、戻り値に明示的に注釈を付ける必要がありました。

すべてが現在の状態を変更しません。 JSR-305も標準化されておらず、IDEAもそれを実装していません。

+2

IDEAは現在@ParametersAreNonnullByDefaultをサポートしています:http://www.jetbrains.com/idea/webhelp/@parametersarenonnullbydefault-annotation.html –

+0

^linkコメントは壊れています...これは動作します(現在は...):https://www.jetbrains.com/help/idea/2017.1/parametersarenonnullbydefault-annotation.html – Lambart

7

Ideaバージョン14はJSR 305 "@TypeQualifierDefault"アノテーションをサポートしています。カスタム注釈を作成して、package-info.javaファイルのパッケージ宣言で使用することができます。 (パラメータだけでなく、メソッドの戻り値、ローカル変数など)は、null値を許可しないと暗黙的に注釈が付けられます。

残念ながら、これは再帰的にサブパッケージに影響しません。したがって、各サブパッケージにはpackage-info.javaファイルが必要です。アノテーションを使用するようにそのサブパッケージを宣言してください。

は詳細と使用例については、こちらを参照してください。これは、既にアーリーアクセスプログラム(EAP)に実装されていること

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

注構築します。

関連する問題