最終的なローカル変数に応じて、匿名の内部クラスで条件付きブレークポイントを設定する方法は?

StackOverflow https://stackoverflow.com/questions/4733572

質問

次のクラスがあり、マークされた場所で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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top