簡體   English   中英

單個文件中多個頂級Java類的用例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM