Java 为什么使用封闭类';例如,静态嵌套类可以';不能实例化吗?

Java 为什么使用封闭类';例如,静态嵌套类可以';不能实例化吗?,java,class,static,nested,inner-classes,Java,Class,Static,Nested,Inner Classes,我知道可以直接访问类的静态成员,而不需要封闭类的实例 class Outer { static int a = 10; public static void main(String[] args) { System.out.println(a);//without using instance } } 但是,同样的静态成员也可以通过类的实例访问。因为它们在特定类的所有实例中共享 class Outer { static int a =

我知道可以直接访问类的静态成员,而不需要封闭类的实例

class Outer
{
    static int a = 10;

    public static void main(String[] args)
    {
        System.out.println(a);//without using instance
    }
}
但是,同样的静态成员也可以通过类的实例访问。因为它们在特定类的所有实例中共享

class Outer
{
    static int a = 10;

    public static void main(String[] args)
    {
        System.out.println(new Outer().a);//with using instance
    }
}
所有这些似乎只适用于静态变量和静态方法,当尝试使用静态嵌套类时,会导致编译错误:限定静态类的新属性

与其他静态成员类似,即使这样也应该是可能的。不是吗? 是否有我遗漏的任何内部细节?

请参阅以下内容:

注意:静态嵌套类与其外部类(和其他类)的实例成员进行交互,就像其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了便于打包而嵌套在另一个顶级类中

A只是一个不嵌套在另一个类中的类

因此,静态嵌套类与非嵌套类没有区别。在您的示例中,
Nested
在行为上与
Outer
没有什么不同;它可以在
Outer
外部声明。因此,
new Outer().new Nested()
是无效语法。嵌套静态类只是为了方便打包,因此
new Outer.Nested()
可以工作,就像
new java.util.ArrayList()
可以工作一样

class Outer
{
    static class Nested
    {
        int a = 10;
    }

    public static void main(String[] args)
    {
        System.out.println(new Outer().new Nested().a);
    }
}