所以我一直在C#工作了很多年,現在正在使用Java。在C#中,您可以使用internal關鍵字來隱藏公共視圖中的類/方法,但是如果您特別授予它,則允許某些程序集/包訪問。當我在Java環顧,我沒有看到任何與內部直接相同的東西。有沒有辦法在java中使用package-private來允許其他包訪問?
我發現了package-private。但是,這使得它完全隱藏在外面的世界。 Java中有沒有辦法允許某些其他程序包訪問內部代碼而不公開?
如果您問我爲什麼要這樣做,答案通常是單元/集成測試,或者需要某些可信的程序包訪問代碼以避免重複。我知道有些人認爲你不應該測試私人/內部代碼。我也知道允許內部訪問通常不是很好的軟件工程。我對這些話題的討論並不感興趣,只是好奇你是否可以做我想做的事情。
謝謝。
Java中沒有任何機制可以做你想要的。 –
最多可以讓你的課程受到保護。然後,同一包中的其他課程將可以訪問它。 – Zahrec
補充@ Zahrec的評論:如果這些其他類是具有受保護成員的類的子級,則該包將被包之外的其他類訪問。這可能是最接近你能達到你想要的。 –