Wie bedingten Haltepunkt in anonymer innerer Klasse zu setzen, je nach endgültigem lokalem Variable?
-
12-10-2019 - |
Frage
Angenommen, ich habe die folgende Klasse und will einen bedingten Haltepunkt setze auf arg == null an der markierten Stelle. Das wird nicht funktionieren in Eclipse und gibt den Fehler „bedingter Haltepunkt hat Kompilierungsfehler (n). Grund: arg kann nicht zu einer Variablen aufgelöst werden“.
fand ich einige relevante Informationen rel="nofollow">, aber selbst wenn ich den Zustand ändern, um „val $ arg == null“(val $ arg ist der Variablenname in dem Debugger Variablenansicht angezeigt), eclipse mir den gleichen Fehler gibt.
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);
}
};
}
}
Lösung
Sie könnten versuchen, das Argument als ein Feld in der lokalen Klasse platzieren.
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);
}
};
}
Andere Tipps
Ich kann nur eine hässliche Abhilfe bieten:
if (arg == null) {
int foo = 0; // add breakpoint here
}
System.out.println(arg);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow