Java中的非嵌套类是否合法使用?例如:
MyClass.java:
final class NonNestedClass {
    ...
}
public class MyClass {
    private NonNestedClass nonNested;
    ...
}
据我所知,这相当于在MyClass下有一个静态嵌套类.NonNestedClass无法访问MyClass的字段.有没有区别,更重要的是,这种范式是否合法使用?
有什么区别吗[?]
是的。
非嵌套类,即使在同一个文件中,也是一个独立的顶级类。它与文件的同名类没有特殊关系。
嵌套类可以访问它们所嵌套的类的成员,反之亦然。(如果嵌套类是static,则它需要外部类的实例才能访问该实例的字段。)
可以通过名称从其他编译单元访问嵌套类。但通常只能从其他编译单元通过名称访问同名的顶级类。
更重要的是,这种范式是否有合法用途?
在版本 1.1 中引入嵌套类之前,它支持与用 Java 1.0 编写的文件向后兼容。那是大约20年前的事了。这种情况并不经常出现。
除此之外,我个人从未发现需要它。典型的模式是将类及其辅助类放在一个文件中。
参考