class X { void ok() { enum Foo { A, B, C; void m() { } } Foo.A.m(); } void modifiers() { static enum E1 {} private enum E2 {} public enum E3 {} protected enum E4 {} abstract enum E5 {} strictfp enum E6 {} final enum E7 {} } static int sf = 0; int f = 2; void capture() { int l = 5; final int cst = 2; enum Foo { A, B, C { void m() { System.out.println(x); System.out.println(l); System.out.println(f); System.out.println(sf); System.out.println(cst); } }; int x = 2; void m() {} } } U getAndSet(U u) { enum Xyz { A; U u; } U old = Xyz.A.u; Xyz.A.u = u; return old; } }