优点: 作者所指的是静态嵌套类编译成了一个完全独立的 .class 文件,不同于包含它的外部类。因此,如果它困扰你、使事情变得更加复杂或让你感到困惑,最好将其单独使用。 静态嵌套类不依赖外部类实例,可以独立运行。甚至可以在静态嵌套类中编写 main 函数并直接调用。这样做的好处是可以在运行时创建较少的对象,而其他类型的嵌套类则不具备此优势。 缺点: 我唯一能想到的缺点是静态嵌套类可以访问外部类的 protected 和 private 成员。 假设您有一个类 X 和一个类 Y。为了让 Y 访问 X 的私有成员而不是其他人,将 Y 设为 X 的内部类是有帮助的。这通过将它们分组在一起来满足封装的要求。但是,静态嵌套类在访问外部类的成员时不关心外部类的访问修饰符。由于它可以独立存在,因此它可以允许来自外部世界的人与外部类的私有成员交往,并因此破坏封装。将静态嵌套类视为另一个可以访问外部类的私有和受保护成员而不使用外部类的上下文/实例并自由地将它们出售给外部世界进行恶意使用的顶级类。要了解嵌套类或 Java 中的任何内容,建议先查阅 Oracle 文档,然后再读任何书籍,http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html。
一个嵌套类可能会使初学者感到困惑,因为他不理解它。作者小心翼翼地避免混淆这样的初学者,并为了安慰他,提供了一个简单的顶层类。另一方面,由于嵌套类很可能在内容上非常简化,在实例中使用嵌套类可能更加合适,同时将所有相关内容放置在一个地方有助于提高可读性。
一个静态嵌套类不能直接引用其封闭类中定义的实例变量或方法——它只能通过对象引用来使用它们。静态嵌套类与其外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。静态嵌套类在行为上是一个已嵌套在另一个顶级类中的顶级类。
也许这可以帮助你 ----> http://www.techrepublic.com/article/explore-javas-static-nested-classes-and-inner-classes/5815620