Java 什么是静态嵌套类?

Java 什么是静态嵌套类?,java,inner-classes,Java,Inner Classes,可能重复: 什么是静态嵌套类? 静态嵌套类和非静态嵌套类之间有什么区别?静态内部类是嵌套在另一个具有静态修饰符的类中的类。它与顶级类几乎相同,只是它可以访问在其中定义的类的私有成员 class Outer { private static int x; static class Inner1 { } class Inner2 { } } 类Inner1是一个静态内部类。类Inner2是一个非静态的内部类。两者之间的区别在于,非静态内部类的实例永久地附加

可能重复:

什么是静态嵌套类?
静态嵌套类和非静态嵌套类之间有什么区别?

静态内部类是嵌套在另一个具有静态修饰符的类中的类。它与顶级类几乎相同,只是它可以访问在其中定义的类的私有成员

class Outer {
    private static int x;
    static class Inner1 {
    }
    class Inner2 {
    }
}
类Inner1是一个静态内部类。类Inner2是一个非静态的内部类。两者之间的区别在于,非静态内部类的实例永久地附加到外部类的实例上——没有外部类,您无法创建Inner2。不过,您可以独立创建Inner1对象


外部、内部1和内部2中的代码都可以访问x;其他代码将不被允许。

事实上,我上面链接的问题比我投票支持的问题更适合……我认为您在以下方面是错误的:除非它可以访问它在其中定义的类的私有成员,否则您将得到编译时错误无法对非静态字段进行静态引用,静态类不会访问外部/封闭类的任何非静态成员。您将访问控制的概念与实际有成员可访问混淆了。允许静态内部类中的代码以与封闭类的静态方法中的代码完全相同的方式查看封闭类的所有成员;如果静态代码有一个封闭类的实例要处理,它可以看到该实例的所有成员。好的,明白你的意思了,:,我的BAD可能会显示Outer2,一个在外部类之外的类,并将其与Inner1/Inner2进行比较。“请。”乔洛先生加了一点。