[英]Use case for multiple top-level Java classes in a single file?
Java中的非嵌套類是否合法使用? 例如:
MyClass.java:
final class NonNestedClass {
...
}
public class MyClass {
private NonNestedClass nonNested;
...
}
據我所知,這相當於在MyClass下有一個靜態嵌套類。 NonNestedClass無法訪問MyClass的字段。 有沒有區別,更重要的是,這種范式是否合法使用?
有什么區別[?]
是。
非嵌套類即使在同一文件中,也是一個獨立的頂級類。 它與文件的同名類沒有特殊關系。
嵌套類可以訪問嵌套它們的類的成員,反之亦然。 (如果嵌套類是靜態的 ,則需要外部類的實例來訪問實例的字段。)
可以通過其他編譯單元的名稱訪問嵌套類。 但通常只能通過其他編譯單元的名稱訪問同名的頂級類。
更重要的是,這種范式是否合法使用?
在1.1版中引入嵌套類之前,它支持向后兼容Java 1.0中編寫的文件。 那是大約20年前的事了。 這種情況並不經常出現。
除此之外,我個人從未發現需要它。 典型的模式是將類及其輔助類放在單個文件中。
參考
我經常在測試代碼中使用它,它有助於將所有內容保存在單個文件中,但我不知道這是否有資格作為有效的用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.