【发布时间】:2015-07-21 22:35:19
【问题描述】:
所以我已经在 C# 领域工作了很多年,现在我在 Java 领域工作。在 C# 中,您可以使用 internal 关键字从公共视图中隐藏类/方法,但如果您特别授予它,则允许某些程序集/包访问。当我在 Java 中环顾四周时,我看不到任何与内部相同的东西。
我发现了 package-private。但是,这使它对外界完全隐藏。 Java 中有没有办法允许某些其他包访问内部代码而不将其公开?
如果您问我为什么要这样做,答案通常是单元/集成测试,或者需要让某些受信任的包访问代码以不重复它。我知道有些人认为您不应该测试私有/内部代码。我也知道允许内部访问通常不是好的软件工程。我对这些话题的讨论并不感兴趣,只是好奇你能不能做我想做的事。
谢谢。
【问题讨论】:
-
Java 中没有机制可以满足您的需求。
-
你最多可以保护你的类。然后,同一包中的其他类将可以访问它。
-
补充@Zahrec 的评论:如果这些其他类是具有受保护成员的类的子类,则包外的其他类可以访问它。这可能是您能得到的最接近您想要的东西。
标签: java c# internal package-private