枚举 Java 中的私有成员

eri*_*ess 6 java enums

public class Test {

    public static enum MyEnum {
        valueA(1),valueb(2),valuec(3),valued(4);
        private int i;
        private Object o;

        private MyEnum(int number) {
             i = number;
        }

        public void set(Object o) {
            this.o = o;
        }

        public Object get() {
            return o;
        }


     } 

    public static void main(String[] args) {
        System.out.println(MyEnum.valueA.i); // private
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:1

如果它是枚举中的私有成员,为什么会显示 1?

Rei*_*eus 5

外部类可以完全访问其内部类的成员变量,因此 iTest类中可见。

相反,如果MyEnumTest类的外部,编译器会抱怨 的可见性i