Method Local Inner Class

2019-07-17 15:24发布

问题:

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

    }
}

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

Can someone tell me how to print the message from bMethod?

回答1:

You can only instantiate MethodLocalInner within aMethod. So do

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

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

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

}


回答2:

Within the method aMethod after the declaration of the class MethodLocalInner you could for instance do the following call:

new MethodLocalInner().bMethod();


回答3:

Why don't you just create an instance of MethodLocalInner, in aMethod, and call bMethod on the new instance?



回答4:

You need to call new Outer().aMethod() inside your main method. You also need to add a reference to MethodLocalInner().bMethod() inside your aMethod(), like this:

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();
}