单个文件中多个顶级Java类的用例?

时间:2015-07-10 17:40:30

标签: java nested

Java中的非嵌套类是否合法使用?例如:

MyClass.java:

final class NonNestedClass {
    ...
}

public class MyClass {
    private NonNestedClass nonNested;
    ...
}

据我所知,这相当于在MyClass下有一个静态嵌套类。 NonNestedClass无法访问MyClass的字段。是否存在任何差异,更重要的是,这种范式是否合法使用?

2 个答案:

答案 0 :(得分:3)

有什么区别[?]

是。

非嵌套类,即使在同一个文件中,也是一个独立的顶级类。它与文件的同名类没有特殊关系。

嵌套类可以访问嵌套它们的类的成员,反之亦然。 (如果嵌套类是 static ,则需要外部类的实例来访问实例的字段。)

可以通过其他编译单元的名称访问嵌套类。但通常只能通过其他编译单元的名称访问同名的顶级类。

更重要的是,这种范式是否合法使用?

在1.1版中引入嵌套类之前,它支持向后兼容Java 1.0中编写的文件。那是大约20年前的事了。这种情况并不经常出现。

除此之外,我个人从未发现需要它。典型的模式是将一个类及其辅助类放在一个文件中。

<强>参考

答案 1 :(得分:0)

我经常在测试代码中使用它,它有助于将所有内容保存在单个文件中,但我不知道这是否有资格作为有效的用例。