Java code showing error: "inner class can't be public"?

Viewed 124
class one {
    void methodOne(){
               public class Two {

                }
    }
}

Java code showing error: "inner class can't be public"?

1 Answers

In Java, you can write a class within a method. These are called method-local inner classes and they will be of local types (pretty much like local variables), the scope of the inner class is restricted within the method, so it can't be public (more details here and here).

Here is a complete example:

public class MethodLocalInnerClassExample {
    private int x = 10;

    void printFromInner(final int a) {
        final int y = 10;

        class MethodLocalInnerClass {
            int w = 5;

            public void print(int z) {
                System.out.println("x + y - z + w + a = " + (x+y-z+w+a));
            }
        }

        MethodLocalInnerClass innerClass = new MethodLocalInnerClass(); // must come after the class' definition
        innerClass.print(5);
    }
}
Related