Java中私有静态嵌套类中的访问修饰符

Java中私有静态嵌套类中的访问修饰符,java,class,methods,static,access-modifiers,Java,Class,Methods,Static,Access Modifiers,我有一个Java中的“私有静态”嵌套类。这个类中字段和方法的访问修饰符的意义是什么?我已经尝试了公开和私人两种方式,但对我的申请没有任何影响 public class MyList<T>{ private static class Node{ // List node private Object item; private Node next; private Node prev; private Node(

我有一个Java中的“私有静态”嵌套类。这个类中字段和方法的访问修饰符的意义是什么?我已经尝试了公开和私人两种方式,但对我的申请没有任何影响

public class MyList<T>{
    private static class Node{ // List node
        private Object item;
        private Node next;
        private Node prev;

        private Node(Node next){
            this.next = next;
        }

        private static Node doStuff(){}
    }
}
公共类MyList{
私有静态类节点{//列表节点
私人物品;
私有节点下一步;
私有节点prev;
专用节点(下一个节点){
this.next=next;
}
私有静态节点doStuff(){}
}
}

两种嵌套类:1。静态(嵌套类)和2。非静态(也称为内部类)

现在,外部类
MyList
可以访问内部类
节点
的所有成员,但实际上,当需要某些外部类的访问限制时,可以使用类
节点
成员(嵌套类)的访问说明符


有趣的阅读:,

因为它是一个嵌套类,
节点
中的所有内容都可以被
MyList
访问,而不管访问修饰符是什么;因为它是一个私有嵌套类,所以在
节点
中首先声明的内容在
MyList
之外都不可见

因此,访问修饰符可能起作用的一种情况是重写超类方法的方法(例如
toString()
)。不能降低重写方法的可见性
toString()
必须始终声明为公共才能编译类


还应该注意,当外部类访问私有成员时,编译器会创建一个合成方法(我相信是包范围的)。此合成方法仅在嵌套类的.class文件中可见。

您能否发布您的代码以及您的假设?您期望的答案是什么。我要补充的是,只有当内部类不是
private
“当外部类访问私有成员时,编译器创建一个合成方法”,内部类上的修饰符才起作用。当仅从外部类访问静态嵌套类的
私有静态
成员时,它是否创建合成方法?据推测,所有静态成员(包括静态嵌套类的成员)都是在编译时解析的。@andrybak Java编译器可以识别外部类何时访问内部私有成员,而不管它是否是静态的。它只在需要时创建合成访问器方法。@ILMTitan我知道,我的问题是关于在外部类中仅使用静态成员时是否创建合成访问器。@ILMTitan我使用字节码反编译器检查了我的问题。事实上,编译器确实会生成合成访问器私有静态变量。