2012-01-07 38 views
1

根據JLS,只要文件中只有一個類是公共的,在一個文件中就有多個類是有效的語法。據我瞭解,這通常是爲了讓只在單個文件中引用的小類在該文件中被維護。如果文件中有多個包專用類,它們是否可以從包中的其他文件引用?

我不確定的一個方面是,如果同一個包中的其他文件能夠安全地引用原始文件中的第二個類 - 通過範圍規則它看起來有效,但我不確定是否編譯時出現問題。我已經看到它的工作頻率很高,但項目的其他開發人員也告訴我,在系統中的其他地方進行更改後,偶爾會出現構建問題,發現有問題的符號。這種設置是指引用嵌入在其他類文件中的包私有類,將某種排序的編譯順序依賴性引入到使構建易碎的過程中?

回答

3

是的,這應該是絕對好的 - 除非你有一個配置錯誤的構建系統,基本上。無論如何,你應該一次性編譯同一個軟件包的所有源代碼。

我可以看到它可能導致一個問題,它試圖找出哪些需要重新編譯一些構建系統 - 如果他們假設源文件的名稱所產生的類的名稱相匹配,他們可能會感到困惑在這裏(即使你在同一個文件中沒有多個類),但這是一個工具問題,而不是語言問題。

注意,通常如果我有「在一個單一的文件稱只有小班」我通常讓他們的私有靜態嵌套類:

public class OuterClass 
{ 
    // Normal code... 

    // Only used within OuterClass 
    private static class Foo 
    { 
    } 
} 

這是清潔劑(IMO)不是給一些包私有訪問,如果它真的只打算從一個類使用。

相關問題