Метод Локальный Внутренний Класс - PullRequest
2 голосов
/ 17 сентября 2008
public class Test {
    public static void main(String[] args) {

    }
}

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

Может кто-нибудь сказать мне, как напечатать сообщение с bMethod?

Ответы [ 5 ]

6 голосов
/ 17 сентября 2008

Вы можете только создать экземпляр MethodLocalInner в пределах aMethod. Так же

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

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

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

}
1 голос
/ 17 сентября 2008

Почему бы вам не создать экземпляр MethodLocalInner в aMethod и не вызвать bMethod для нового экземпляра?

1 голос
/ 17 сентября 2008

В методе aMethod после объявления класса MethodLocalInner вы можете, например, выполнить следующий вызов:

new MethodLocalInner().bMethod();
0 голосов
/ 10 октября 2013

Вам нужно вызвать new Outer (). AMethod () внутри вашего основного метода. Вам также нужно добавить ссылку на MethodLocalInner (). BMethod () внутри вашего aMethod (), например:

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();
}
0 голосов
/ 17 сентября 2008

Это может помочь вам начать (у меня нет ничего удобного для тестирования). Обратите внимание на измененный синтаксис конструктора:

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

...