Java コンパイルのエラー/警告設定

エラー/警告の設定値は 「エラー/警告」設定ページを開くJava」>「コンパイラー」>「エラー/警告設定ページで指定します。

コード・スタイル

オプション

説明

デフォルト

静的メンバーへの非静的アクセス

使用可能にすると、コンパイラーは、static フィールドまたはメソッドが式の受取側でアクセスされるときにエラーまたは警告を出します。 静的メンバーの参照は、型名で限定されなければなりません。

警告

静的メンバーへの間接アクセス

使用可能にすると、static フィールドまたはメソッドが間接的にアクセスされた場合に、 コンパイラーがエラーまたは警告を出します。 インターフェースの static フィールドは、宣言する型名で修飾される必要があります。

無視

インスタンス・フィールドへの限定されていないアクセス

使用可能にすると、修飾されていない (例えば 'this' がない) フィールド・アクセスを検出した場合に、コンパイラーがエラーまたは警告を出します。

無視

エンクロージング型のアクセス不能メンバーへのアクセス

使用可能にすると、コンパイラーはエンクロージング型のアクセス不能メンバーへのアクセスをエミュレートするとき、エラーまたは警告を出します。 このようなアクセスは、パフォーマンスに影響を与える可能性があります。

無視

パラメーターへの代入

一般に、パラメーターへの値の代入は、好ましくないプログラミング・スタイルと見なされます。このオプションを使用可能にすると、コンパイラーはこのようなシナリオをエラーまたは警告として通知します。

無視

外部化されていないストリング

使用可能にすると、コンパイラーは、外部化されていない文字列リテラル (つまり、//$NON-NLS-<n>$ のタグがないもの) に対して、または文字列に所属しない非外部化文字列タグに対して、エラーまたは警告を出します。

無視

文書化されていない空のブロック

使用可能にすると、コンパイラーは、説明コメントがない空のブロック・ステートメントを検出した場合にエラーまたは警告を出します。

無視

リソースは try-with-resource によって管理されない (1.7 以上)

これを有効にすると、ローカル変数が 'java.lang.AutoCloseable' 型の値を持っている場合、しかもそのリソースに対してメソッド 'close()' が明示的に起動されるが、try-with-resources ブロックによってリソース管理されない場合に、コンパイラーはエラーまたは警告を出します。

無視

コンストラクター名を持つメソッド

一般に、メソッドにコンストラクター名を使用して名前を付けると、プログラミングのスタイルが不良であると見なされます。 このオプションを使用可能にすると、コンパイラーはこのようなシナリオをエラーまたは警告として通知します。

警告

静的メソッドにできる (Method can be static)

有効にすると、コンパイラーは、静的メンバーだけを参照する private または final のメソッドについてエラーまたは警告を出します。

無視

潜在的な静的メソッドにできる (Method can potentially be static)

有効にすると、コンパイラーは、静的メンバーだけを参照する private または final ではないメソッドについてエラーまたは警告を出します。ただし、メソッドは、サブクラスでオーバーライドされる可能性があるので、潜在的な静的メソッドを静的メソッドにすると、既存のクライアントに支障をきたす可能性があります。

無視

潜在的なプログラミングの問題

同一の値を比較 ('x == x')

使用可能にすると、コンパイラーは、比較で同一のオペランドが使用されているとき (例:「x == x」) にエラーまたは警告を出します。

警告

効果のない代入 (例:「x = x」)

使用可能にすると、コンパイラーは、代入に効果がないとき (例:「x = x」) にエラーまたは警告を出します。

警告

考えられる偶発的なブール割り当て (例:「if (a = b)」)

使用可能にすると、コンパイラーは、偶発的なブール割り当ての可能性を検出した場合 (例:「if (a = b)」) に、エラーまたは警告を出します。

無視

ボクシングおよびアンボクシング変換

使用可能にすると、コンパイラーは、ボクシングまたはアンボクシングへの変換を検出した場合にエラーまたは警告を出します。オートボクシングは、パフォーマンスに悪い影響を及ぼす場合があります。

無視

ストリング連結での文字配列の使用

使用可能にすると、char[] 式が次のストリング連結で使用されたときに、コンパイラーはエラーまたは警告を出します。

"hello" + new char[]{'w','o','r','l','d'}

警告

可変引数に対する不正確な型の一致

使用可能にすると、コンパイラーは、可変引数に対する不正確な型の一致を検出した場合にエラーまたは警告を出します。

警告

空のステートメント

使用可能にすると、コンパイラーは、空のステートメント (例えば、不要なセミコロンなど) を検出した場合にエラーまたは警告を出します。

無視

未使用のオブジェクトの割り振り

使用可能にすると、コンパイラーは、以下のような、使用されない割り振られたオブジェクトを検出した場合にエラーまたは警告を出します。

if (name == null)
   new IllegalArgumentException();

無視

列挙型での不完全な 'switch' ケース

使用可能にすると、コンパイラーは、参照される列挙の各列挙定数に対する 'default' ケースも case ステートメントも含まない 'switch' ステートメントを検出した場合に、エラーまたは警告を出します。

この警告は、Java 言語仕様 14.11 で推奨されています。 これは、可能性のあるすべての列挙型値を 'switch' ステートメントで確実に網羅するのに役立ちます。

警告

'default' ケースが存在する場合でもシグナル

これを使用可能にすると、'default' ケースが存在する場合であっても、列挙定数が case によって扱われない場合にコンパイラーは追加のエラーまたは警告を出します。

このオプションは、新しい列挙定数が追加されるときに case ステートメントの欠落を見つける点で役立ちます。

オフ

'switch' で 'default' ケースが欠落

これを使用可能にすると、'switch' ステートメントで 'default' ケースが欠落している場合に、コンパイラーがエラーまたは警告を出します。 このため、可能なすべての値が他の方法で 'case' ステートメントによって扱われる場合でも、'default' の欠落に関してフラグが立てられます。

このオプションは、新しい 'switch' 式値が、スキップされることなく、明示的に処理されるようにする点で役立ちます。 また、'switch' ステートメントの後の未初期化変数に関するコンパイル・エラーを示すのにも役立ちます。一連の有効値は後に増える可能性があるため、変数を 'default' ケースで初期化する必要もあります。

無視

'switch' 文の case のフォールスルー

使用可能にすると、前の空ではない case をフォールスルーして次の case に入ったときに、コンパイラーはエラーまたは警告を出します。

無視

隠れた catch ブロック

ローカル側の try ステートメントに対して、いくつかの catch ブロックが以下のように他の catch ブロックを隠す場合があります。

try { throw new java.io.CharConversionException();
} catch (java.io.CharConversionException e) {
} catch (java.io.IOException e) {}

使用可能にすると、コンパイラーは、チェック例外に対応する隠れた catch ブロックについてエラーまたは警告を出します。

警告

'finally' が正常に完了しない

使用可能にすると、'finally' ステートメントが正常に完了しない (例えば return 文が含まれている) 場合に、コンパイラーがエラーまたは警告を出します。

警告

不要コード (例えば 'if (false)')

使用可能にすると、コンパイラーは、不要コード (例えば 'if (false)' ) を検出した場合にエラーまたは警告を出します。

警告

リソース・リーク

これを有効にすると、ローカル変数が 'java.lang.AutoCloseable' 型の値 (準拠 >= 1.7) または 'java.io.Closeable' 型の値 (準拠 <= 1.6) を持っている場合、しかもその値に対してメソッド 'close()' がローカルに起動されないことがフロー分析で示される場合に、コンパイラーはエラーまたは警告を出します。

警告

潜在的なリソース・リーク

これを有効にすると、ローカル変数が 'java.lang.AutoCloseable' 型の値 (準拠 >= 1.7) または 'java.io.Closeable' 型の値 (準拠 <= 1.6) を持っている場合、しかもすべての実行パスでその値に対してメソッド 'close()' がローカルに起動されないことがフロー分析で示される場合に、コンパイラーはエラーまたは警告を出します。

無視

serialVersionUID なしのシリアライズ可能クラス

使用可能にすると、コンパイラーは、 'java.io.Serializable' を実装する型に serialVersionUID フィールドが含まれていない場合に、エラーまたは警告を出します。

警告

継承されたメソッドに synchronized 修飾子が欠落しています

使用可能にすると、コンパイラーは、synchronized 修飾子が欠落している継承されたメソッドを検出した場合にエラーまたは警告を出します。

無視

クラスでは 'equals()' をオーバーライドしていますが 'hashCode()' はオーバーライドしていません

使用可能にすると、コンパイラーは、'hashCode()' をオーバーライドせず 'equals()' をオーバーライドするクラスを検出した場合にエラーまたは警告を出します。

無視

名前のシャドーイングおよび競合

フィールド宣言が他のフィールドまたは変数を隠蔽

使用可能にすると、コンパイラーは、フィールド宣言によって他の継承フィールドが隠蔽される場合にエラーまたは警告を出します。

無視

ローカル変数宣言が他のフィールドまたは変数を隠蔽

使用可能にすると、コンパイラーは、ローカル変数宣言によって他のフィールドまたは変数が隠蔽される場合にエラーまたは警告を出します。

無視

コンストラクターまたは Setter メソッド・パラメーターを組み込む

使用可能にすると、コンパイラーはさらに、コンストラクターまたは setter メソッド・パラメーターによって他のフィールドまたは変数が隠蔽される場合に、エラーまたは警告を出します。

オフ

型パラメーターが別の型を隠蔽

使用可能にすると、コンパイラーは、例えばインナー・クラスの型パラメーターによって外部型が隠蔽される場合にエラーまたは警告を出します。

警告

メソッドはパッケージ表示メソッドをオーバーライドしない

パッケージ・デフォルト・メソッドは別のパッケージで可視ではないため、これをオーバーライドできません。 このオプションを使用可能にすると、コンパイラーはこのようなシナリオをエラーまたは警告として通知します。

警告

インターフェース・メソッドがプロテクトされた 'Object' メソッドと競合

使用可能にすると、継承されない Object メソッドと互換性のないメソッドをインターフェースが定義したときに、コンパイラーはエラーまたは警告を出します。この競合が解決するまで、次のようなインターフェースは実装できません。

interface I {
   int clone();
}

警告

使用すべきではない制限された API

使用すべきではない API

使用可能にすると、コンパイラーは使用すべきでない API の使用をエラーまたは警告として通知します。

警告

使用すべきでないコード内での使用すべきでない API の使用を知らせる

使用可能にすると、コンパイラーは使用すべきでないコード内の使用すべきでない API の使用を通知します。 この問題の重大度は、「使用すべきではない API」オプションで制御されます。

オフ

使用すべきでないメソッドのオーバーライドまたは実装を知らせる

使用可能にすると、コンパイラーは、使用すべきでないメソッドのオーバーライドまたは実装を知らせます。この問題の重大度は、「使用すべきではない API」オプションで制御されます。

オフ

禁止された参照 (アクセス規則)

使用可能にすると、コンパイラーは、アクセス規則で指定されている禁止済みの参照を知らせます。

エラー

推奨されていない参照 (アクセス規則)

使用可能にすると、コンパイラーは、アクセス規則で指定されている推奨されない参照を知らせます。

警告

不要なコード

ローカル変数の値が使用されない (Value of local variable is not used)

使用可能にすると、コンパイラーは、ローカル変数が宣言されていても、その値がそのスコープ内でまったく使用されていない場合にエラーまたは警告を出します。

警告

パラメーターの値が使用されない (Value of parameter is not used)

使用可能にすると、コンパイラーは、パラメーターが宣言されていても、その値がそのスコープ内でまったく使用されていない場合にエラーまたは警告を出します。

無視

オーバーライドおよび実装メソッドを無視

使用可能にすると、コンパイラーは、パラメーターが宣言されているにもかかわらず、他のメソッドをオーバーライドまたは実装するメソッド内のその範囲内でまったく使用されていない場合に、エラーまたは警告を出しません。

オン

'@param' タグで記述されたパラメーターを無視

使用可能にすると、コンパイラーは、未読のパラメーターが '@param' タグで記述されている場合にエラーまたは警告を出しません。

オン

未使用の型パラメーター

使用可能にすると、コンパイラーは、未使用の型パラメーターについてエラーまたは警告を出します。

無視

未使用のインポート

このオプションを使用可能にすると、コンパイラーは未使用インポート参照についてエラーまたは警告を出します。

警告

未使用の private メンバー

使用可能にすると、コンパイラーは、private メンバーが宣言されたが同一ユニット内で全く使用されない場合にエラーまたは警告を出します。

警告

不要な 'else' ステートメント

使用可能にすると、コンパイラーは、不要な else ステートメント (例えば、if (condition) return; else doSomething(); など) を検出した場合にエラーまたは警告を出します。

無視

不要なキャストまたは 'instanceof' 操作

使用可能にすると、コンパイラーは、不要なキャストまたは 'instanceof' 操作 (例えば、if (object instanceof Object) return; など) を検出した場合にエラーまたは警告を出します。

無視

スローされた例外の不要な宣言

使用可能にすると、コンパイラーは、スローされた例外の不要な宣言を検出した場合にエラーまたは警告を出します。

無視

オーバーライドおよび実装メソッドを無視

使用可能にすると、コンパイラーは、他のメソッドをオーバーライドまたは実装するメソッド内で、スローされた例外の不要な宣言を検出した場合にエラーまたは警告を出しません。

オン

'@throws' または '@exception' タグで記述された例外を無視

使用可能にすると、コンパイラーは、スローされた例外の不要な宣言が '@throws' または '@exception' タグで記述されている場合にエラーまたは警告を出しません。

オン

'Exception' および 'Throwable' を無視

使用可能にすると、コンパイラーは、'Exception' および 'Throwable' 例外の不要な宣言を検出した場合にエラーまたは警告を出しません。

オン

未使用の 'break' または 'continue' ラベル

使用可能にすると、コンパイラーは、未使用の 'break' または 'continue' ラベルを検出した場合にエラーまたは警告を出します。

警告

冗長スーパー・インターフェース

使用可能にすると、コンパイラーは、そのスーパータイプによって既に実装されているインターフェースを明示的に実装する型を検出した場合にエラーまたは警告を出します。

無視

総称型

未検査の総称型操作

使用可能にすると、コンパイラーは、未検査の総称型操作を検出した場合にエラーまたは警告を出します。

警告

raw 型の使用

使用可能にすると、コンパイラーは raw 型の使用を検出した場合 (例えば List<String> の代わりに List) に、エラーまたは警告を出します。

警告

バインドされた final 型を使用して宣言される総称型パラメーター

使用可能にすると、コンパイラーは、final 型とともにバインドされた型を検出した場合にエラーまたは警告を出します。

警告

未加工 API による不可避な総称型の問題を無視

有効にすると、コンパイラーは、プログラマーが回避できなかった総称関連型の問題を無視します。 これは、参照される API にすでに raw 型が含まれているためです。 例えば、型がスーパータイプからオーバーライドされるメソッドが、そもそも raw 型を使用するように宣言されているために、メソッド・シグニチャーと戻りの型で raw 型を使用するように型の強制が行われる場合があります。

古い API がジェネリックスを使用するように変更された時点で、これらの問題の大部分が解消されるか、あるいは、使用されている型引数が正しくないためにコンパイル・エラーが生成されるようになります。 メソッド・シグニチャーでの raw 参照では、raw 型の問題が再発します。

オフ

注釈

'@Override' 注釈の欠落

使用可能にすると、コンパイラーは、メソッドが他の実装済みメソッドを上書きしようとしているが、'@Override' 注釈が欠落していることを検出した場合にエラーまたは警告を出します。

無視

インターフェース・メソッドの実装を含む (1.6 以上)

使用可能にすると、コンパイラーは、メソッドがインターフェース内で宣言されているメソッドをオーバーライドまたは実装しようとしているが、'@Override' 注釈が欠落していることを検出した場合にもエラーまたは警告を出します。
'@Override' はコンパイラーの準拠レベルが 1.6 以降のメソッドでのみ許可されるため、このエラーまたは警告は 1.5 のコードには現われません。

オン

'@Deprecated' 注釈の欠落

使用可能にすると、コンパイラーは、追加の '@Deprecated' 注釈を持たない、使用すべきでない型を検出した場合にエラーまたは警告を出します。

無視

注釈をスーパー・インターフェースとして使用

使用可能にすると、コンパイラーは、注釈を実装する型を検出した場合にエラーまたは警告を出します。これは可能ですが、不適切な動作とみなされます。

警告

'@SuppressWarnings' 内の処理されないトークン

使用可能にすると、コンパイラーは、'@SuppressWarnings' 注釈内の不明なトークンを検出した場合にエラーまたは警告を出します。

警告

'@SuppressWarnings' 注釈の使用可能化

使用可能にすると、コンパイラーは、'@SuppressWarnings' 注釈を処理します。 使用不可にすると、すべての '@SuppressWarnings' 注釈が削除されたかのように動作します。

オン

未使用の '@SuppressWarnings' トークン

使用可能にすると、コンパイラーは、'@SuppressWarnings' 注釈内の未使用トークンを検出した場合にエラーまたは警告を出します。

警告

'@SuppressWarnings' を使用してオプション・エラーを抑制

使用可能にすると、'@SuppressWarnings' 注釈はオプションのコンパイル・エラー (つまり、ここで「エラー」に設定されたオプション) もまた抑制します。 必須のコンパイル・エラーを抑制することはできません。

オフ

ヌル分析

NULL ポインター・アクセス

使用可能にすると、コンパイラーは、NULL であるローカル変数が逆参照されていることを検出した場合にエラーまたは警告を出します。ただし、分析によってすべての NULL ポインター・アクセスを検出できるわけではありません。「潜在的な NULL ポインター・アクセス」を参照してください。

警告

潜在的な NULL ポインター・アクセス

使用可能にすると、コンパイラーは、Null の可能性があるローカル変数が逆参照されていることを検出した場合にエラーまたは警告を出します。分析はかなり保守的であることに気をつけてください。分析では何か疑わしいものがある場合には、該当するケースとみなされます。

「注釈ベースのヌル分析を使用可能にする」オプションを使って有効化できるヌル注釈を使用すると、分析の品質が改善される可能性があります。

無視

冗長 NULL 検査

使用可能にすると、コンパイラーは、NULL にできないローカル変数が NULL かどうかをテストする場合にエラーまたは警告を出します。

無視

ヌル分析に 'assert' を含める

使用可能にすると、ヌル分析時にコンパイラーは 'assert' ステートメントを扱います。

オフ

注釈ベースの NULL 分析を使用可能にする

これを使用可能にすると、特定の型に 'null' 値が含まれるかどうかが注釈 @Nullable、@NonNull、および @NonNullByDefault で指定されているとコンパイラーは解釈します。

これらの分析の効果は、以下のサブオプションによってさらに制御されます。

Null 注釈の使用 (Using null annotations) も参照してください。

オフ

NULL 指定の違反

以下のいずれかの状態が検出されるたびに、このオプションに応じてコンパイラーはエラーまたは警告のどちらかを出します。

  1. 非 NULL 注釈を使って宣言されたメソッドが NULL 可能な式を返す。
  2. NULL 可能な式がメソッド呼び出しの引数として渡されており、呼び出されるメソッドの対応するパラメーターが非 NULL 注釈を使って宣言されている。
  3. NULL 可能な式が、非 NULL 注釈を使って宣言されたローカル変数に割り当てられている。
  4. 非 NULL 注釈を使って宣言された継承メソッドをオーバーライドするメソッドが、NULL 可能な注釈を指定することにより、その規定を緩めようとしている (反変リターンの禁止)。
  5. 少なくとも 1 つのパラメーターに関する NULL 可能宣言を持つ継承メソッドをオーバーライドするメソッドが、対応するパラメーターに非 NULL 注釈を指定することにより、その NULL 規定を厳しくしようとしている (共変パラメーターの禁止)。

上記で、式が NULL 可能と見なされるのは、それが null 値に評価されることが静的に分かっている場合、または NULL 可能な注釈を使って宣言されている場合です。

エラー

NULL 注釈と NULL 推論の間の競合

以下のいずれかの状態が検出されるたびに、このオプションに応じてコンパイラーはエラーまたは警告のどちらかを出します。

  1. 非 NULL 注釈を使って宣言されたメソッドによって返される式が、いくつかのフローで NULL 値に評価されることが静的に分かっている。
  2. いくつかのフローで NULL 値に評価されることが静的に分かっている式が、メソッド呼び出しの引数として渡されており、呼び出されるメソッドの対応するパラメーターが非 NULL 注釈を使って宣言されている。
  3. いくつかのフローで NULL 値に評価されることが静的に分かっている式が、非 NULL 注釈を使って宣言されたローカル変数に割り当てられている。

エラー

非注釈型から @NonNull 型への未検査変換

以下のいずれかの状態が検出されるたびに、このオプションに応じてコンパイラーはエラーまたは警告のどちらかを出します。

  1. 非 NULL 注釈を使って宣言されたメソッドによって返される式の NULL 特性情報は、実行時にフローが NULL 値を渡さないことを静的に証明するには不十分である。
  2. メソッド呼び出しの引数として渡される式の NULL 特性情報が、実行時に決して NULL 値に評価されないことを静的に証明するためには十分でない。呼び出されるメソッドの対応するパラメーターは、非 NULL 注釈を使って宣言されている。
  3. NULL 特性情報が、実行時に決して NULL 値に評価されないことを静的に検証するための NULL 特性情報が十分でない式が、非 NULL 注釈を使って宣言されたローカル変数に割り当てられている。

未検査の変換は通常、他の注釈なし変数またはメソッドを使用した結果です。

警告

冗長な NULL 注釈

これを有効にすると、現在の場所に適用されるデフォルトによって既に同じ効果が得られるにも関わらず、非 NULL 注釈が適用される場合に、コンパイラーがエラーまたは警告を出します。 そのようなデフォルトは、@NonNullByDefault 注釈を使用して設定される可能性があります。

警告

オーバーライドする側のメソッドで注釈が付けられていない「@NonNull」パラメーター

これを有効にすると、以下の条件すべてが当てはまる場合に、コンパイラーは、継承されたメソッドをオーバーライドするメソッドのパラメーターに対してエラーまたは警告を出します。

  • オーバーライドされるメソッドが、対応するパラメーターを非 NULL として宣言している。
  • オーバーライドする側のメソッドにあるパラメーターに NULL 注釈がない。
  • オーバーライドする側のメソッドが、NULL 特性デフォルトの影響を受けない。
  • NULL 注釈の継承が使用不可。

警告

パッケージでの '@NonNullByDefault' 注釈の欠落

これを有効にすると、以下の場合にコンパイラーがエラーまたは警告を出します。

  1. デフォルトの NULL 特性注釈がパッケージに含まれていない (原因は package-info.java の欠落、または package-info.java でデフォルトの NULL 特性注釈が欠落)。
  2. デフォルト・パッケージ内部の型に、デフォルトの NULL 特性注釈が含まれていない。

無視

NULL 指定にデフォルトの注釈を使用する

これを有効にすると、コンパイラーは NULL 仕様のためのデフォルト注釈セットを使用します。 これらの注釈は Eclipse SDK の org.eclipse.jdt.annotation バンドルに含まれています。

異なる注釈名を指定してプロジェクトで使用することができますが、以下に示すように、デフォルト注釈で指定されたセマンティクスだけが Eclipse コンパイラーでサポートされることに注意してください。

  • org.eclipse.jdt.annotation.Nullable: この完全修飾名を持つ Java 注釈型がメソッド・シグニチャー、変数宣言、またはフィールド宣言で型に適用される場合、その場所で NULL が有効値であることを指定するものと解釈されます。
    現在サポートされている場所は、メソッド・パラメーター、メソッドの戻りの型、およびローカルの変数とフィールドです。
  • org.eclipse.jdt.annotation.NonNull: この完全修飾名を持つ Java 注釈型がメソッド・シグニチャー、変数宣言、またはフィールド宣言で型に適用される場合、その場所で NULL が有効値ではないことを指定するものと解釈されます。
    現在サポートされている場所は、メソッド・パラメーター、メソッドの戻りの型、およびローカルの変数とフィールドです。
  • org.eclipse.jdt.annotation.NonNullByDefault: Java 注釈型の完全修飾名。 注釈引数なしでこれが要素に適用される場合、注釈付き要素内のメソッド・シグニチャーに含まれるすべての非注釈型は、非 NULL 注釈を使って指定されたかのように扱われます。
    逆に、引数として定数 'false' を使って注釈が適用される場合、外部スコープでの対応するデフォルトは、注釈が付く要素に関してすべて取り消されます。

オン

NULL 注釈の継承

これを有効にすると、コンパイラーは明示的な NULL 注釈がなくても各メソッドを検査します: NULL 注釈があるメソッドをオーバーライドする場合、現行のメソッドは、オーバーライドされる側のメソッドと同じ注釈が含まれているものとして処理されます。

注釈継承では、オーバーライドされたメソッドの実効 NULL 特性が使用されます。これは、継承が推移的に適用されてから、オーバーライドされるメソッドにおいてデフォルトの NULL 特性が適用された後のものです。

メソッド・シグニチャーの中の同じタイプに対し、異なる暗黙的な NULL 注釈 (非 NULL デフォルトかオーバーライドされるメソッド、あるいはその両方に由来) が適用可能な場合、エラーのフラグが立てられて、あいまいさを解消するために明示的な NULL 注釈が必要になります。

オフ

フィールドの構文 NULL 分析を使用可能にする (Enable syntactic null analysis for fields)

これを有効にすると、通常であればフィールド参照に対して NULL 関連の警告が出るはずであるものの、同じフィールド参照が直前に非 NULL だったと分かっている場合にはリスクを低く保ちつつ警告を抑止できる、特定の構文の一群がコンパイラーによって検出されます。 このオプションを使用する場合には、ここに記載されているヒントを参照してください。

オフ

上記のエラーを致命的なコンパイル・エラーと同様に扱う」を使用可能にした場合、致命的エラーまたは構成可能エラーのどちらが生成された場合も、結果としてコードは実行不能になります。 これを使用不可にした場合は、致命的エラー (構文エラー、型エラー、または Java 言語仕様に関するいずれかのエラー) がない限り、コードは実行可能です。

関連概念

「問題」ビュー
クイック・フィックス
Java ビルダー