Cómo establecer punto de interrupción condicional en clase interna anónima en función de la variable local final?
-
12-10-2019 - |
Pregunta
supongamos que tengo la siguiente clase y quiero establecer un punto de interrupción condicionada a arg == null en el lugar marcado. Esto no funcionará en Eclipse y da el error "punto de interrupción condicional tiene error de compilación (s) Motivo:. Arg no se puede resolver a una variable".
He encontrado alguna información relacionada aquí , pero incluso si cambio de la condición de "$ val arg == null"(val $ arg es el nombre de la variable representada en vista de variables del depurador), eclipse me da el mismo error.
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);
}
};
}
}
Solución
You could try placing the argument as a field in the local class.
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);
}
};
}
Otros consejos
I can only offer an ugly workaround:
if (arg == null) {
int foo = 0; // add breakpoint here
}
System.out.println(arg);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow