2013-09-27 240 views
0

我正在創建一個庫(android)。我把東西保存爲如下的包: com.domain.libname.datamodel; com.domain.libname.exceptions;等庫級訪問修飾符

我想要初始化我的圖書館內的一些數據模型對象,公衆可以閱讀的自由,但公衆不應該初始化這些對象。雖然'包'訪問修飾符在一個包中執行此操作,但我希望在同一個項目/庫中的包之間執行此操作。

有沒有辦法?或者它是否表明我不是以正確的方式包裝東西?

回答

1

Java中的包裝結構是扁平的:如果你想在包裝外看到東西,它將對所有包都是可見的;無法將可見性限制爲「子包」或具有特定前綴的包。

我的意見是,一個包應該實現一個功能,以便需要合作的類可以這樣做,而無需向外部暴露不必要的東西。這意味着你不會有像「datamodel」或「exceptions」這樣的「人造」包;相反,數據模型和例外將包含在實際需要它們實現一組用例的包中。但是我可以看到在大型應用程序或圖書館中如何變得不切實際。

+0

這很不幸。 .Net有'friend'修飾符,有時這個修飾符有意義。謝謝。 – Saran