Intereting Posts

Подавить потенциальное исключение NullPointerException в Android Studio

Эта:

@Nullable Item[] mItems; public Item getItem(int position) { return mItems[position]; } 

Выдает предупреждение:

 Array access 'mItems[position]' may produce NullPointerException 

Я хочу подавить это предупреждение (я знаю, что getItem() не будет вызываться, если mItems является нулевым).

Я пробовал использовать следующие аннотации:

  • @SuppressWarnings({"NullableProblems"})
  • @SuppressWarnings({"null"})

А также с //noinspection , но они все не работают.

Использование @SuppressWarnings({"all"}) работает, но это явно не то, что я ищу.

Android Studio не предлагает опции подавления, когда я нажимаю alt + enter , просто параметры для добавления (бесполезной) нулевой проверки.

Solutions Collecting From Web of "Подавить потенциальное исключение NullPointerException в Android Studio"

Это работает для меня, но не уверен, почему 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]; } 

Я знаю, что вы сказали, что уверены, что getItem() не будет вызываться, если mItems имеет значение null . Тем не менее, инспектор не будет учитывать, что вы уже проверяете перед вызовом функции, следовательно, предупреждение.

Или вы можете просто оставить его, так как mItems = null никогда не произойдет. Но ваш код будет выглядеть грязным, и для меня это раздражает.