Cette:
@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 je frappe alt + enter, juste les options pour ajouter une vérification nulle (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 la nullité car c'est une condition constante (c'est-à-dire qu'elle ne sera toujours pas nulle).
@Nullable
Item[] mItems;
@SuppressWarnings("ConstantConditions")
public Item getItem(int position) {
return mItems[position];
}
Si vous voulez empêcher Android Studio de vous déranger avec ces avertissements tout en les conservant dans le compilateur, allez simplement dans Paramètres -> Éditeur -> Inspections -> Conditions constantes et exceptions et décochez-le.
Si au lieu de cela vous souhaitez 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é. J'ajoute simplement la déclaration assert
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 la getItem()
ne sera pas appelée si mItems
est null
. Cependant, l'inspecteur ne tiendra pas compte du fait que vous avez déjà vérifié avant d'appeler la fonction, d'où l'avertissement.
Ou vous pouvez simplement le laisser car mItems = null
Ne se produira jamais. Mais votre code aura l'air un peu désordonné, et pour moi, c'est ennuyeux.
@SuppressWarnings ("ConstantConditions") fait l'affaire pour moi.