6
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

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

4

5 回答 5

5

外部类可以完全访问其内部类的成员变量,因此 i在类中是可见的Test

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

于 2013-03-09T16:03:47.143 回答
3

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

于 2013-03-09T16:04:17.517 回答
1

允许从包含类型到嵌套类型的私有访问,请参阅为什么枚举类型上的私有字段对包含类可见?

于 2013-03-09T16:13:43.967 回答
0

vlaueA被认为是一个静态变量,因此您可以在其中调用它,MyEnum因为i在同一enum类中播放与类相同,因此MyEnum可以访问valueA哪个可以访问i

于 2013-03-09T16:09:07.633 回答
0

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

于 2013-03-09T16:13:19.177 回答