Java嵌套包可见性

时间:2014-10-10 14:44:11

标签: java package

通常,当我设计项目的一些新组件时,我有一个限制,我无法正确地解决这个问题......

想象一下包"组件"在这个组件包中你有一些公共类/接口,它们自然地被设计为公共共享和内部包中需要的一些类/接口(ComponentSpecificStuff),但那些不应该从包外看到...

现在只有当前的java可能性,我实现这一点的方法是违反(不暴露Stuff outside" component" package)时刻......

你是如何解决这个问题的?

1 个答案:

答案 0 :(得分:3)

是的,你可以通过在包名中使用内部关键字来做到这一点 示例您有一个包

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.这就是我进一步扩展包的意思。


编辑

您可以通过不向类提供任何访问修饰符来定义类包私有 示例:

class PackagePrivateClass{

}

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