Question

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

    }
}

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

Quelqu'un peut-il me dire comment imprimer le message à partir de bMethod ?

Était-ce utile?

La solution

Vous ne pouvez instancier MethodLocalInner que dans aMethod . Alors

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

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

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

}

Autres conseils

Dans la méthode aMethod après la déclaration de la classe MethodLocalInner , vous pouvez par exemple effectuer l'appel suivant:

new MethodLocalInner().bMethod();

Pourquoi ne créez-vous pas simplement une instance de MethodLocalInner dans aMethod et appelez bMethod sur la nouvelle instance?

Cela pourrait vous aider à démarrer (je n'ai rien de pratique à tester avec). Notez la syntaxe de constructeur modifiée:

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

Vous devez appeler new Outer (). aMethod () dans votre méthode principale. Vous devez également ajouter une référence à MethodLocalInner (). BMethod () dans votre aMethod (), comme ceci:

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();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top