簡體   English   中英

有沒有一種方法可以在Java中使用package-private來允許其他軟件包訪問?

[英]Is there a way to use package-private in java to allow other packages access?

因此,我從事C#已有多年,現在正在使用Java。 在C#中,您可以使用internal關鍵字在公共視圖中隱藏類/方法,但如果您特別授予許可,則允許某些程序集/程序包訪問。 當我在Java中四處查看時,看不到與內部直接相同的任何東西。

我發現了關於包私有的。 但是,這使它完全對外界隱藏。 Java中是否有一種方法可以允許某些其他程序包在不公開的情況下訪問內部代碼?

如果您問我為什么要這樣做,那么答案通常是單元/集成測試,或者需要讓某些受信任的程序包訪問代碼以免重復。 我知道有人認為您不應該測試私有/內部代碼。 我也知道,允許內部訪問通常不是好的軟件工程。 我對這些主題的討論並不十分感興趣,只是好奇您是否可以做我想做的事情。

謝謝。

Java沒有.NET中的程序集概念(至少現在還沒有)。 最接近的是OSGi捆綁軟件,它具有這個概念(x-內部,x-朋友等),但這並不是Java的真正核心。

如果您不使用OSGi,則無需進行此復雜操作。 只要確保您的單元測試與被測類在同一個程序包中即可。 Maven目錄結構(即使您不使用Maven也是一個不錯的選擇),可以使用src/main/javasrc/test/java等設置它。

您可以將測試放在另一個地方的相同程序包名稱中。 這被視為相同的程序包,您可以訪問程序包私有類。 可以將測試類放置在另一個JAR文件中,例如testSomething.jar而被測試的程序包則放在something.jar

這不適用於密封包裝。

暫無
暫無

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

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