Java的嵌套包可见

Java的嵌套包可见

问题描述:

通常当我设计我认为巡航能力我不能正确的方式制定出限制该项目的一些新的组件......Java的嵌套包可见

想象一下,一个包“组件”,并在此组件包你有一些公共类/接口,这些公共共享和一些类/接口(ComponentSpecificStuff)是自然设计的,需要在内部包中,但这些不应该从包的外部可见...

现在用当前的java possiblities唯一的办法我做到这一点是违反了(不公开之外的东西“组件”包)时刻......

你如何解决这个问题?

+2

在Java中没有像“内部包”这样的概念。就编译器而言,包不是分层结构 - “层次结构”只是组织的人类模式匹配。 – 2014-10-10 14:48:50

是的,你可以通过包名使用内部关键字做它,直到有一定关系。
实施例你有一个包

com.myPackage.component 

可以用另一个包作为

com.myPackage.component.internal.blahblah 

当使用关键字内部它不暴露于其他罐子和不可用于使用所述罐外,但可以被另一个包装在罐子里面使用。这里的内部软件包将com.myPackage.component向下扩展。正如引用Jon SkeetPackages are not hierarchical as far as the compiler is concerned - the "hierarchy" is just human pattern matching for organization, effectively.这就是我的意思是通过进一步扩展包。


编辑

您可以通过不给予任何访问修饰符的类 例定义一个类包私人:

class PackagePrivateClass{ 

} 

您可以在同一个包,但外面的导入这个类打包它不允许你使用它。

+0

谢谢,虽然我不知道内部软件包的特殊含义,但这是问题的部分答案......在某些情况下,为了使内部的东西不可见而分配项目是不合理的......所以我想,我们已经描述过使用当前的java不可能的吗? – vach 2014-10-10 15:02:10

+0

我听说过java 9拼图即将做些什么。 – vach 2014-10-10 15:03:08

+0

我了解包装保护的知名度。整个问题是,它不会允许不仅在外面,而且在内部,但我已经明白了你的观点,它不是一个层次结构......太糟糕了不是:( – vach 2014-10-10 15:21:07