Как установить условную точку останова в анонимном внутреннем классе в зависимости от конечной локальной переменной?
-
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