如何在IntelliJ

时间:2016-04-20 13:30:28

标签: debugging android-studio intellij-idea intellij-14 android-studio-2.0

我需要在调试应用程序时更改变量。到目前为止,它只是可以直接设置的基本变量。现在我需要清除一个数组,以便isEmpty()返回true;

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

在intellij调试器中,我看到:

someList={ArrayList@4271} size=1

我使用了&#39; setValue&#39;调试器的方法并尝试过:new ArrayList<String>()someList = new ArrayList<String>()

导致

someList={ArrayList@4339} size=0

但是,如果我继续,则在调用isEmpty()时会出现NullPointerException。所以我的问题是:如何在不获取NPE的情况下注入空的ArrayList?

NPe的文本是:java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.isEmpty()' on a null object reference

3 个答案:

答案 0 :(得分:16)

您是否尝试在调试期间使用“评估表达式”(Windows上的“ Alt + F8 ”)?

在此窗口中,您可以写:

 someList.clear();

someList = new ArrayList<String>();

它应该可以解决问题。

答案 1 :(得分:6)

if(someList.isEmpty())停止断点,按 ALT + F8 (评估表达式),输入someList.clear(),然后按Evaluate,继续调试。现在它肯定会进入if条件。

答案 2 :(得分:0)

我遇到了这个问题,但是我正在使用Kotlin, 您可以(someList as ArrayList<*>).clear()