繁体   English   中英

Java嵌套包可见性

[英]Java nested package visibility

通常,当我设计项目的某些新组件时,我遇到了一个限制,即我无法找到正确的解决方法...

想象一下一个包“组件”,在这个组件包中,您有一些公共类/接口自然是设计用来公开共享的,还有一些内部包中需要的类/接口(ComponentSpecificStuff),但是这些类/接口在包外部是不可见的。 ..

现在,在当前的java可能性下,我实现此目标的唯一方法是违反(不在“组件”程序包之外公开Stuff”)。

您如何解决呢?

是的,您可以通过在包名称中使用internal关键字来做到一定程度。
示例您有一个包裹

com.myPackage.component

你可以有另一个包裹

com.myPackage.component.internal.blahblah

当您使用关键字internal时,它不会暴露在其他jar上,并且无法在jar外使用,但可以由另一个包在jar内使用。 在这里,内部包将com.myPackage.component进一步扩展到层次结构中。 正如Jon Skeet所引用的Packages are not hierarchical as far as the compiler is concerned - the "hierarchy" is just human pattern matching for organization, effectively. 这就是我进一步扩展软件包的意思。


编辑

您可以通过不给类Example提供任何访问修饰符来定义一个私有的类包:

class PackagePrivateClass{

}

您可以在同一包中导入此类,但在包外部不允许使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM