Enum Java中的私人成员

时间:2013-03-09 15:49:03

标签: 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
    }
}

输出:1

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

5 个答案:

答案 0 :(得分:4)

因此,外类可以完全访问其内部类的成员变量 i课程中可以看到Test

相反,如果MyEnum位于Test类的外部,编译器会抱怨i的可见性,

答案 1 :(得分:3)

它是(i)在同一个类(MyEnum)中引用的成员字段;没有访问修饰符阻止 - 在i上定义的私有访问修饰符将阻止它在此类之外的可见性。 Suggested Reading

答案 2 :(得分:1)

允许从包含类型到嵌套类型的私有访问,请参阅Why are private fields on an enum type visible to the containing class?

答案 3 :(得分:0)

vlaueA被视为静态变量,因此您可以在MyEnum内调用i 相同的enum次播放与课程相同,因此MyEnum可以访问valueA,可以访问i

答案 4 :(得分:0)

外部类可以访问内部类成员,即使它是私有的,因为你在外部类中定义了main方法。