方法局部内部类

时间:2008-09-17 06:44:11

标签: java inner-classes method-invocation

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 个答案:

答案 0 :(得分:6)

您只能在MethodLocalInner内实例化aMethod

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

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

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

}

答案 1 :(得分:1)

在声明类 MethodLocalInner 之后的 aMethod 方法中,您可以进行以下调用:

new MethodLocalInner().bMethod();

答案 2 :(得分:1)

为什么不在MethodLocalInner中创建aMethod的实例,并在新实例上调用bMethod

答案 3 :(得分:0)

这可能会让你开始,(我没有任何方便测试)。请注意修改后的构造函数语法:

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

答案 4 :(得分:0)

你需要在main方法中调用新的Outer()。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();
}