Supprimer le NullPointerException potentiel dans Android Studio

Ce:

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

produit l’avertissement:

 Array access 'mItems[position]' may produce NullPointerException 

Je veux supprimer cet avertissement (je sais que getItem() ne sera pas appelé si mItems est nul).

J’ai essayé d’utiliser les annotations suivantes:

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

ainsi qu’avec la notation //noinspection , mais ils ne fonctionnent pas tous.

Utiliser @SuppressWarnings({"all"}) fonctionne, mais ce n’est évidemment pas ce que je recherche.

Android Studio n’offre aucune option de suppression lorsque j’appuie sur alt + enter , juste les options pour append une vérification de nullité (inutile).

Cela fonctionne pour moi, mais je ne sais pas pourquoi AS voudrait utiliser des conditions constantes comme suppresseur. Je pense que cela a quelque chose à voir avec la vérification de skip null car c’est une condition constante (c’est-à-dire qu’elle ne sera pas toujours nulle).

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

Si vous souhaitez empêcher Android Studio de vous déranger avec ces avertissements tout en les gardant dans le compilateur, allez simplement dans Paramètres -> Editeur -> Inspections -> Conditions constantes et exceptions et décochez-la.

Si, au contraire, vous voulez le supprimer complètement, utilisez les SuppressWarnings appropriés comme suggéré par les autres réponses:

 @SuppressWarnings("ConstantConditions") 

Pour moi, @SuppressWarnings n’a pas fonctionné. Je viens d’append une déclaration d’affirmation avant les avertissements pour la faire disparaître.

Votre code devrait ressembler à ceci:

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

Je sais que vous avez dit que vous êtes sûr que getItem() ne sera pas appelé si mItems est null . Cependant, l’inspecteur ne tiendra pas compte du fait que vous vérifiez déjà avant d’appeler la fonction, d’où l’avertissement.

Ou vous pouvez simplement le laisser puisque mItems = null n’arrivera jamais. Mais votre code sera un peu désordonné, et pour moi, c’est agaçant.