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); 
            }
        };
    }
}
È stato utile?

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
scroll top