如何在IntelliJ中调试时修改List值

Lon*_*zak 17 debugging intellij-idea android-studio 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
}
Run Code Online (Sandbox Code Playgroud)

在intellij调试器中,我看到:

someList={ArrayList@4271} size=1
Run Code Online (Sandbox Code Playgroud)

我使用了调试器的'setValue'方法并尝试:new ArrayList<String>()someList = new ArrayList<String>()

结果

someList={ArrayList@4339} size=0
Run Code Online (Sandbox Code Playgroud)

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

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

Gui*_*e M 19

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

在这个窗口中你可以写:

 someList.clear();
Run Code Online (Sandbox Code Playgroud)

要么

someList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

它应该做的伎俩.

  • 不适用于 Kotlin:“赋值不是表达式,在此上下文中只允许使用表达式” (3认同)

dam*_*ros 6

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