Domanda

public class Test {
    public static void main(String[] args) {

    }
}

class Outer {
    void aMethod() {
        class MethodLocalInner {
            void bMethod() {
                System.out.println("Inside method-local bMethod");
            }
        }
    }
}

Qualcuno può dirmi come stampare il messaggio da bMethod?

È stato utile?

Soluzione

Puoi solo istanziare MethodLocalInner entro aMethod.Quindi fallo

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

                    System.out.println("Inside method-local bMethod");
            }
    }

    MethodLocalInner foo = new MethodLocalInner(); // Default Constructor
    foo.bMethod();

}

Altri suggerimenti

All'interno del metodo un metodo dopo la dichiarazione della classe MetodoLocalInner potresti ad esempio fare la seguente chiamata:

new MethodLocalInner().bMethod();

Perché non crei semplicemente un'istanza di MethodLocalInner, In aMethod, e chiama bMethod sulla nuova istanza?

Questo potrebbe aiutarti a iniziare (non ho nulla a portata di mano con cui testare).Notare la sintassi modificata del costruttore:

http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html

Devi chiamare new Outer().aMethod() all'interno del tuo metodo principale.Devi anche aggiungere un riferimento a MethodLocalInner().bMethod() all'interno di aMethod(), in questo modo:

public class Test {
    public static void main(String[] args) {
        new Outer().aMethod();
    }
}


void aMethod() {
    class MethodLocalInner {
        void bMethod() {
            System.out.println("Inside method-local bMethod");
        }
    }
    new MethodLocalInner().bMethod();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top