Pergunta

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

    }
}

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

Alguém pode me dizer como imprimir a mensagem de bMethod?

Foi útil?

Solução

Você só pode instanciar MethodLocalInner dentro aMethod.Modo de fazer

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

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

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

}

Outras dicas

Dentro do método aMethod após a declaração da classe MethodLocalInner você poderia, por exemplo, fazer a seguinte chamada:

new MethodLocalInner().bMethod();

Porque não basta você criar uma instância de MethodLocalInner, em aMethod, e chamada de bMethod na nova instância?

Isso pode ajudar você a começar, (eu não tenho nada de útil para fazer o teste).Observe que o construtor modificado sintaxe:

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

Você precisa chamar o new Outer().aMethod() dentro do método main.Você também precisa adicionar uma referência para MethodLocalInner().bMethod() dentro da sua aMethod(), assim:

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();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top