この:
_@Nullable
Item[] mItems;
public Item getItem(int position) {
return mItems[position];
}
_
警告を生成します:
_Array access 'mItems[position]' may produce NullPointerException
_
この警告を抑制したい(mItems
がnullの場合、getItem()
は呼び出されないことを知っている)。
次の注釈を使用してみました。
@SuppressWarnings({"NullableProblems"})
@SuppressWarnings({"null"})
_//noinspection
_表記と同様ですが、すべて機能していません。
@SuppressWarnings({"all"})
を使用しても機能しますが、明らかに私が探しているものではありません。
Android Studioは、ヒットしたときに抑制オプションを提供しません alt + enter、(無駄な)nullチェックを追加するオプションのみ。
これはうまくいきますが、ASがサプレッサーとして一定の条件を使用する理由がわかりません。それは一定の条件であるため、nullスキップチェックと関係があると思います(つまり、常にnullではありません)。
@Nullable
Item[] mItems;
@SuppressWarnings("ConstantConditions")
public Item getItem(int position) {
return mItems[position];
}
Android Studioがそれらの警告をコンパイラーに邪魔することを邪魔しないようにする場合は、[設定]-> [エディター]-> [検査]-> [定数条件と例外]に移動して、チェックを外します。
代わりに完全に削除する場合は、他の回答で提案されている適切なSuppressWarningsを使用します。
@SuppressWarnings("ConstantConditions")
私にとって_@SuppressWarnings
_は機能しませんでした。警告の前にassert
ステートメントを追加して、警告を消しています。
コードは次のようになります。
_@Nullable
Item[] mItems;
public Item getItem(int position) {
assert mItems != null;
return mItems[position];
}
_
mItems
がnull
の場合、getItem()
は呼び出されないと確信していると言ったことは知っています。ただし、インスペクタは、関数を呼び出す前にすでにチェックしていることを考慮しないため、警告が発生します。
または、_mItems = null
_は決して発生しないため、そのままにしておくことができます。しかし、あなたのコードはちょっと厄介に見え、私にとっては迷惑です。
@SuppressWarnings( "ConstantConditions")は私のためにトリックを行います。