为什么以下代码编译良好?
public class MyStack {
private static MyStack myStack ;
private Stack<MyObject> stackOfMyObjects;
private MyStack() {
stackOfMyObjects = new Stack<MyObject>() ;
}
public static void pushToStack(MyObject myObject, MyStack myStack2) {
myStack2.stackOfMyObjects.push(myObject) ;
}
}
在这里,在 pushToStack 方法中,如何通过 stackOfMyObjects 定义了 myStack2 的 stackOfMyObjects 成员?
最佳答案
因为它仍然是MyStack
。 Java中的访问控制与代码的显示位置有关,而与代码是否访问“不同”对象无关。
基本上,MyStack
中的所有代码都可以使用MyStack
中声明的私有(private)成员。
有关更多详细信息,请参见section 6.6 of the JLS。具体来说,在6.6.1节中:
在这里,访问确实发生在包围MyStack
变量声明的顶级类(stackOfMyObjects
)的主体内,因此允许访问。
关于java - Java访问误解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9784034/