簡體   English   中英

使包受保護的Java類在父包中可見

[英]Making package-protected java class visible in parent package

我有兩個包

uk.co.planetbeyond.data

uk.co.planetbeyond.data.bean

如何才能使uk.co.planetbeyond.data.bean中的類對父包uk.co.planetbeyond.data類可見,但在其他包中不可見?

它甚至可能嗎?

據我所知,這是不可能的。 雖然我們傾向於認為包形成層次結構,但它們並不涉及Java語言。

正如所有其他答案中所述:不。包裝層次結構意味着設置人員的思想之外沒有任何東西。

在我看來,這是Java的主要缺陷。 通過將其他怪物程序合並在一起構建怪物系統時,沒有什么能比Java語言更好。 所有其他語言最終都會陷入混亂,無法記錄,難以理解的代碼堆中。

那么,Java也是如此,但它比我使用的任何其他語言都要進一步發展。 但是它對包層次結構的無知 - 無法將數據封裝在包層次結構中 - 是阻止它的限制或磚牆。 我可以將一個系統或一組一起工作的類放在一個包中。 然后我可以將這些類包中的一堆私有化,這樣當這個包被添加到另一個超級系統時超級系統無法看到 - 並且被這些隱藏的類弄糊塗了。

但是,如果我的系統已經足夠超級(“超級”,如“超人”,而非“超級”)需要幾個包清楚,我以前的包私有類現在必須是公開的,我不能阻止超級 -超級系統從我的超級系統中看到一切。

要使龐大而復雜的系統工作,必須盡量減少每個點的復雜性。 我的超級系統必須看起來盡可能簡單到我正在添加它的超級超級系統。 所有的管道和電線以及橫梁和焊縫都是公開展示的,因為我無法將它們打包成私有包裝並沒有幫助。

我希望其他地方提到的Jigsaw會有所幫助。 我也希望IDE之類的開發人員工具能夠以大綱格式開始顯示包,而不是將ab和abcde視為同一級別 - 只是同一列表中的元素。

目前,這是不可能的。 Java包本質上不是分層的 - 類可以在同一個包中,也可以不在。

但是,這可能是Project Jigsaw將要解決的問題之一,它可能包含在Java 8中。這應該允許創建在模塊的所有包中公開的類,但不會導出到其他模塊。

不,這是不可能的。 包可見性無法有選擇地擴展到其他包。 類只能是私有的(即,僅對非私有封閉類可見),package-private(無修飾符,僅對同一包中的其他類可見)或public(對所有類可見)。

據我所知,在Java中是不可能的。 有關更多信息,請參閱此處的鏈接,該鏈接清楚地解釋了Java中的訪問修飾符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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