7

Мне нужно изменить переменную во время отладки приложения. До сих пор это были просто базовые переменные, которые можно было бы непосредственно установить. Теперь мне нужно очистить массив, чтобы isEmpty() вернул true;Как изменить значение List во время отладки в IntelliJ

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

В Intellij отладчик я вижу:

someList={[email protected]} size=1 

я использовал метод 'SetValue' отладчика и попытался: new ArrayList<String>() или someList = new ArrayList<String>()

, что приводит к

someList={[email protected]} size=0 

Однако, если я продолжу, я получаю исключение NullPointerException, когда isEmpty () называется. Итак, мой вопрос: Как я могу ввести пустой ArrayList без получения NPE?

Текст NPE является: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.isEmpty()' on a null object reference

ответ

8

Вы пытались использовать "Вычислить выражение" во время отладки ("Alt + F8" на Windows)?

В этом окне вы можете написать:

someList.clear(); 

или

someList = new ArrayList<String>(); 

И это следует сделать трюк.

+0

спасибо, да, что сделал трюк – Lonzak

3

Остановить контрольную точку в if(someList.isEmpty()), нажмите ALT +F8 (вычисления выражения), тип someList.clear(), нажмите Evaluate и просто продолжить отладку. Теперь он обязательно войдет в условие if.

+0

спасибо, да, это трюк - ваш ответ правильный. Гийом был немного быстрее, поэтому я принял его ответ - не могу принять оба ;-) – Lonzak

+0

Нет проблем. Рад быть в состоянии помочь. – dambros

Смежные вопросы