可能重复:
Java 内部类和静态嵌套类
静态内部类的实例不能访问其封闭类的实例成员,而非静态内部类的实例可以。这就是我所说的句法差异。因为是否声明一个内部类是静态的,决定了你程序的语法是否正确。
但是还有其他不属于 Java 语法的区别吗?假设 A 类是顶级类,B 类是 A 的内部类。如果我不打算在 B 中访问 A 的实例成员,那么我应该将 B 声明为静态的。但由于我不需要这样做,我可以将 B 声明为非静态的,并且不会出现编译错误。那么在这种情况下,是否有任何区别,可能是生成的字节码,或者任何运行时区别?
谢谢!