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

Rom*_*man 8 java methods static class access-modifiers

我在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(){}
    }
}
Run Code Online (Sandbox Code Playgroud)

ILM*_*tan 11

因为它是一个嵌套类,Node所以可以访问所有内容MyList<T>,而不管访问修饰符; 因为它是一个私有嵌套类,所以首先声明的内容Node都不会在外面可见MyList<T>.

因此,访问修饰符可能重要的一种情况是覆盖超类方法(例如toString())的方法.您无法降低重写方法的可见性.toString()必须始终声明为公共,以便编译类.

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

  • 好答案.我补充一点,内部类的修饰符只有在内部类不是"私有"时才有意义. (2认同)

zen*_*ngr 5

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

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

有趣的读物:Source1,Source2