最終的なローカル変数に応じて、匿名の内部クラスで条件付きブレークポイントを設定する方法は?
-
12-10-2019 - |
質問
次のクラスがあり、マークされた場所でarg == nullに条件付きブレークポイントを設定したいとします。これはEclipseでは機能せず、「条件付きブレークポイントにはコンピレーションエラーがあります。理由:ARGを変数に解決できません」というエラーになります。
いくつかの関連情報を見つけました ここ, 、しかし、条件を「val $ arg == null」に変更したとしても(val $ argはデバッガーの変数ビューに表示される変数名です)、Eclipseは同じエラーを与えてくれます。
public abstract class Test {
public static void main(String[] args) {
Test t1 = foo("123");
Test t2 = foo(null);
t1.bar();
t2.bar();
}
abstract void bar();
static Test foo(final String arg) {
return new Test() {
@Override
void bar() {
// I want to set a breakpoint here with the condition "arg==null"
System.out.println(arg);
}
};
}
}
解決
地元のクラスのフィールドとして議論を配置することを試みることができます。
static Test foo(final String arg) {
return new Test() {
private final String localArg = arg;
@Override
void bar() {
// I want to set a breakpoint here with the condition "arg==null"
System.out.println(localArg);
}
};
}
他のヒント
私は醜い回避策のみを提供することができます:
if (arg == null) {
int foo = 0; // add breakpoint here
}
System.out.println(arg);
所属していません StackOverflow