質問

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?

役に立ちましたか?

解決

インスタンス化のみ可能です MethodLocalInner 内で aMethod. 。そうします

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

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

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

}

他のヒント

メソッド内で 方法 クラスの宣言後 メソッドLocalInner たとえば、次の呼び出しを実行できます。

new MethodLocalInner().bMethod();

のインスタンスを作成してみてはいかがでしょうか MethodLocalInner, 、 で aMethod, 、そして電話します bMethod 新しいインスタンスで?

これで始めることができるかもしれません (テストに便利なものは何もありません)。変更されたコンストラクター構文に注目してください。

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

メインメソッド内で new inner().aMethod() を呼び出す必要があります。次のように、aMethod() 内に MethodLocalInner().bMethod() への参照を追加する必要もあります。

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();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top