通常,当我设计项目的一些新组件时,我有一个限制,我无法正确地解决这个问题......
想象一下包"组件"在这个组件包中你有一些公共类/接口,它们自然地被设计为公共共享和内部包中需要的一些类/接口(ComponentSpecificStuff),但那些不应该从包外看到...
现在只有当前的java可能性,我实现这一点的方法是违反(不暴露Stuff outside" component" package)时刻......
你是如何解决这个问题的?
答案 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{
}
您可以在同一个包中导入此类,但在包之外,它不允许您使用它。