7

Potrzebuję zmienić zmienną podczas debugowania aplikacji. Do tej pory były to tylko podstawowe zmienne, które można było bezpośrednio ustawić. Teraz muszę wyczyścić tablicę, aby isEmpty() zwrócił true;Jak zmodyfikować wartość listy podczas debugowania w IntelliJ

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

W debugger IntelliJ widzę:

someList={[email protected]} size=1 

użyłem 'setValue' metodę debugger i próbowałem: new ArrayList<String>() lub someList = new ArrayList<String>()

co powoduje

someList={[email protected]} size=0 

Jednak jeśli kontynuuję, otrzymuję wyjątek NullPointerException, gdy isEmpty () jest nazywany. Więc moje pytanie: Jak wstrzyknąć pustą ArrayList bez uzyskania NPE?

Tekst NPE jest: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.isEmpty()' on a null object reference

Odpowiedz

8

Czy spróbujesz użyć "Ocenić wyrażenie" podczas debugowania ("Alt + F8" w systemie Windows)?

W tym oknie można napisać:

someList.clear(); 

lub

someList = new ArrayList<String>(); 

A powinno załatwić sprawę.

+0

dziękuję, tak, że podstęp – Lonzak

3

Zatrzymaj przerwania na if(someList.isEmpty()) naciśnij ALT + F8 (oceny ekspresji), typ someList.clear() naciśnij Evaluate i po prostu przejść na debugowanie. Teraz definitywnie wejdzie w warunek if.

+0

dzięki, tak, że załatwiłeś sprawę - twoja odpowiedź jest poprawna. Guillaume był trochę szybszy, więc przyjąłem jego odpowiedź - nie mogę przyjąć obu ;-) – Lonzak

+0

Nie ma problemu. Cieszę się, że mogę ci pomóc. – dambros