在Java中,内部类可以访问封闭类的私有成员.但是外层类可以访问内部类的私有成员吗?这与内部阶级是否是静态无关.我认为这不是真的,但以下代码似乎编译并正常工作.
public class Outer {
class Inner {
private int i = 0;
private Inner() {}
}
public static void main(String[] args) {
Outer o = new Outer();
Outer.Inner oi = o.new Inner();
oi.i = 10;
}
}
Run Code Online (Sandbox Code Playgroud) 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
}
}
Run Code Online (Sandbox Code Playgroud)
输出:1
如果它是枚举中的私有成员,为什么会显示 1?