Come impostare breakpoint condizionale in classe interna anonima a seconda variabile locale finale?
-
12-10-2019 - |
Domanda
supponiamo di avere la seguente classe e si desidera impostare un punto di interruzione subordinata arg == null nella posizione segnata. Questo non funzionerà in Eclipse e dà l'errore "punto di interruzione condizionale ha errore di compilazione (s) Motivo:. Arg non può essere risolto a una variabile".
Ho trovato alcune informazioni relative al qui , ma anche se cambio la condizione di "$ val arg == null"(val $ arg è il nome della variabile visualizzata nella visualizzazione variabile del debugger), Eclipse mi dà lo stesso errore.
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);
}
};
}
}
Soluzione
Si potrebbe provare a collocare l'argomento come un campo nella classe locale.
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);
}
};
}
Altri suggerimenti
I può offrire solo una soluzione brutta:
if (arg == null) {
int foo = 0; // add breakpoint here
}
System.out.println(arg);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow