java - 实例化静态嵌套类

标签 java inner-classes nested-class

这个类

public class Main {

    public static void main(String[] args) {
        Main m = new Main();
        m.new A();
        m.new B();    //1 - compilation error

        new Main.B();
    }

    class A{}
    static class B{}  //2
}

将导致第 1 行出现编译时错误:

Illegal enclosing instance specification for type Main.B

但我不明白为什么,我发现它有点违反直觉:在第 2 行我们有一个静态类定义,它也应该可以从对象 m 访问吗?

编辑

如果Main有一个静态变量im.i不会导致编译错误。为什么行为与类定义不同?

最佳答案

没有。

静态内部类的全部要点是它没有具有封闭类的实例。

关于java - 实例化静态嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382040/

相关文章:

java - 这句话是什么意思并且......?

以动态方式提供的 Java 注释值

java - 为什么实例和静态内部类的初始化不同?

python - (Python) 意外创建的闭包

ruby-on-rails - Rails 3 ActiveModel 嵌套类 I18n

c++ - 嵌套类的问题。 "error: expected unqualified-id before ' {' token"

java - 如何从 MATLAB 代码捕获 java 异常

java - 错误找不到符号和类离散属性

Java - 内部类构造函数 - 仅允许外部类

java - 内部类对象如何驻留在内存中?