7

Ich muss eine Variable beim Debuggen einer Anwendung ändern. Bisher konnten nur Basisvariablen direkt gesetzt werden. Jetzt muss ich ein Array löschen, so dass isEmpty() wahr zurückgibt;So ändern Sie einen Listenwert beim Debuggen in IntelliJ

ArrayList<String> someList = new ArrayList<String>; 
someList.add("1"); 
... 
if(someList.isEmpty()){ //break point 
//need to enter here 
} 

Im intellij Debugger sehe ich:

someList={[email protected]} size=1 

I verwendet, um die 'setValue' Methode des Debuggers und versucht: new ArrayList<String>() oder someList = new ArrayList<String>()

die

someList={[email protected]} size=0 
in

ergibt

Wenn ich jedoch fortfahre bekomme ich eine NullPointerException, wenn die isEmpty () wird genannt. Also meine Frage: Wie kann ich eine leere ArrayList injizieren ohne eine NPE zu bekommen?

Der Text des NPE ist: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.isEmpty()' on a null object reference

Antwort

8

Haben Sie versucht, während debug "Ausdruck auswerten" die verwenden ("Alt + F8" unter Windows)?

In diesem Fenster können Sie schreiben:

someList.clear(); 

oder

someList = new ArrayList<String>(); 

Und es sollte den Trick tun.

+0

danke, ja das hat den Trick – Lonzak

3

Stoppen Sie den Haltepunkt an if(someList.isEmpty()), drücken ALT +F8 (Ausdruck auswerten), Typ someList.clear(), drücken Evaluate und nur auf Fehlersuche gehen. Jetzt wird es definitiv die if-Bedingung eingeben.

+0

Danke, ja, das hat den Trick - Ihre Antwort ist richtig. Guillaume war ein bisschen schneller, also akzeptierte ich seine Antwort - kann beides nicht akzeptieren ;-) – Lonzak

+0

Kein Problem. Freut mich, helfen zu können. – dambros

Verwandte Themen