Как установить условную точку останова в анонимном внутреннем классе в зависимости от конечной локальной переменной? - PullRequest
4 голосов
/ 19 января 2011

предположим, у меня есть следующий класс, и я хочу установить условную точку останова на 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); 
            }
        };
    }
}

Ответы [ 2 ]

4 голосов
/ 19 января 2011

Я могу предложить только уродливый обходной путь:

if (arg == null) {
     int foo = 0; // add breakpoint here
}
System.out.println(arg);
2 голосов
/ 19 января 2011

Вы можете попробовать разместить аргумент в виде поля в локальном классе.

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); 
        }
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...