为什么枚举类型上的私有字段对包含类可见?

时间:2011-02-21 17:51:11

标签: java enums access-control

public class Parent {

    public enum ChildType {

        FIRST_CHILD("I am the first."),
        SECOND_CHILD("I am the second.");

        private String myChildStatement;

        ChildType(String myChildStatement) {
            this.myChildStatement = myChildStatement;
        }

        public String getMyChildStatement() {
            return this.myChildStatement;
        }
    }

    public static void main(String[] args) {

        // Why does this work?
        System.out.println(Parent.ChildType.FIRST_CHILD.myChildStatement);
    }
}

在参考此枚举时,是否存在关于Parent子类,同一包中的类等的访问控制的其他规则?我可以在哪里找到规范中的规则?

3 个答案:

答案 0 :(得分:21)

答案 1 :(得分:7)

因为枚举实际上是父类的内部类。

答案 2 :(得分:0)

顶级课程就像一个村庄,每个人都认识大家,没有秘密。其中的嵌套单位不会改变这一事实。

class A
    private a;

    class B
        private b

        a = x; // ok

    new B().b = y; // ok

    class C extends A{}

    new C().a = z; // ok