Je dois modifier une variable lors du débogage d'une application. Jusqu'à présent, seules les variables de base pouvaient être définies directement. Maintenant, je dois effacer un tableau pour que isEmpty()
renvoie true;
ArrayList<String> someList = new ArrayList<String>;
someList.add("1");
...
if(someList.isEmpty()){ //break point
//need to enter here
}
Je vois dans le débogueur intellij:
someList={ArrayList@4271} size=1
J'ai utilisé la méthode 'setValue' du débogueur et essayé: new ArrayList<String>()
ou someList = new ArrayList<String>()
qui se traduit par
someList={ArrayList@4339} size=0
Cependant, si je continue, je reçois une exception NullPointerException lorsque la fonction isEmpty () est appelée. Donc ma question: Comment puis-je injecter une ArrayList vide sans obtenir un NPE?
Le texte du NPe est le suivant: Java.lang.NullPointerException: Attempt to invoke interface method 'boolean Java.util.List.isEmpty()' on a null object reference
Avez-vous essayé d'utiliser "l'expression d'évaluation" lors du débogage ("Alt + F8"sous Windows)?
Dans cette fenêtre, vous pouvez écrire:
someList.clear();
ou
someList = new ArrayList<String>();
Et ça devrait faire l'affaire.
Arrêtez le point d'arrêt à if(someList.isEmpty())
, appuyez sur ALT + F8 (évaluer une expression), tapez someList.clear()
, appuyez sur Evaluate
et poursuivez le débogage. Maintenant, il entrera définitivement dans la condition if.
J'ai ce problème, mais j'utilise Kotlin, , Ce que vous pouvez faire (someList as ArrayList<*>).clear()