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?
答案 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
方法。