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