Enum Java中的私有成员
产出:1Enum Java中的私有成员,java,enums,Java,Enums,产出:1 如果1是枚举中的私有成员,为什么会显示它?外部类可以完全访问其内部类的成员变量,因此 i在Test类中可见 相反,如果MyEnum在Test类之外,编译器会抱怨i的可见性,它是(i)在同一类(MyEnum)中引用的成员字段;没有访问修饰符可以阻止这种情况-在i上定义的私有访问修饰符将阻止它在此类之外的可见性。 vlaueA被认为是一个静态变量,因此您可以在MyEnum中调用它,因为 相同的enum与类相同,因此MyEnum可以访问valueA,可以访问i的外部类将有权访问内部类成员,即
如果1是枚举中的私有成员,为什么会显示它?外部类可以完全访问其内部类的成员变量,因此
i
在Test
类中可见
相反,如果MyEnum
在Test
类之外,编译器会抱怨i
的可见性,它是(i)在同一类(MyEnum)中引用的成员字段;没有访问修饰符可以阻止这种情况-在i上定义的私有访问修饰符将阻止它在此类之外的可见性。
vlaueA
被认为是一个静态变量,因此您可以在MyEnum
中调用它,因为
相同的
enum
与类相同,因此MyEnum
可以访问valueA
,可以访问i
的外部类将有权访问内部类成员,即使它是私有的,因为您已在外部类中定义了main
方法。从包含类型到允许嵌套类型,请参见按惯例查看,枚举始终为大写!private表示仅对类可见,但这正是您所拥有的。
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
}
}