Enum

Enum

enum нельзя объявлять внутри методов.
enum нельзя делать внутренним классом в не статическом внутреннем классе.


class MyClass {
    enum Size { SMALL, MEDIUM, LARGE }
    
    // enum не может быть локальным
    void aMethod() {
        enum Size { SMALL, MEDIUM, LARGE } // ошибка компиляции
    }

    class Inner {        
        // enum нельзя объявлять в не статическом контексте
        enum Size { SMALL, MEDIUM, LARGE } // ошибка компиляции
    }

    static class StaticNested {
        enum Size { SMALL, MEDIUM, LARGE }
    }

    public static void main(String[] args) {
        System.out.println(MyClass.Size.LARGE);
        MyClass.StaticNested.Size s = MyClass.StaticNested.Size.LARGE;
    }
}
Типы данных