web-dev-qa-db-fra.com

Comment modifier une valeur de liste lors du débogage dans IntelliJ

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

14
Lonzak

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.

15
Guillaume M

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.

6
dambros

J'ai ce problème, mais j'utilise Kotlin, , Ce que vous pouvez faire (someList as ArrayList<*>).clear()

0
Xianwei