web-dev-qa-db-ja.com

IntelliJでデバッグ中にリストの値を変更する方法

アプリケーションのデバッグ中に変数を変更する必要があります。これまでは、直接設定できるのは単なる基本的な変数でした。ここで、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
_

デバッガーの「setValue」メソッドを使用して試してみました: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

17
Lonzak

デバッグ中に「式の評価」を使用しようとしましたか( "AltF8"Windowsの場合)?

このウィンドウでは、次のように記述できます。

 someList.clear();

または

someList = new ArrayList<String>();

そしてそれはトリックをするべきです。

20
Guillaume M

if(someList.isEmpty())でブレークポイントを停止し、 ALTF8 (式を評価)、someList.clear()と入力し、Evaluateを押して、デバッグを続行します。これで、確実にif条件に入ります。

7
dambros

私はこの問題を抱えていますが、私はKotlinを使用しています。これは(someList as ArrayList<*>).clear()で実行できます

0
Xianwei