跨模块拆分的 Java 9 子包

Gar*_*son 1 java java-9 java-module

在 Java 9 中,我可以跨模块拆分子包吗?例如,我可以com.example.foo在一个模块中同时com.example.foo.bar在另一个模块中吗?

这似乎是一个简单的问题,但由于某种原因,我在搜索后无法找到直接答案。权威的参考将不胜感激。

我假设我可以在不同的模块中拥有同级子包,例如com.example.foocom.example.other

Mic*_*ael 6

没有“子包”这样的东西。除了任意两个随机包之外my.packagemy.package.sub没有什么共同点:它们只是名称相似。看到这个开始的答案

实际上,Java 中没有子包这样的东西

既然如此,是的,您可以将它们包含在不同的模块中。

  • 我知道这是传统的包观点,但我想确认这个概念在引入模块系统后仍然有效,这使之前版本中存在的许多假设无效。有没有考虑到新模块系统的权威参考? (2认同)
  • 模块系统不会改变包的任何语义,我不知道你为什么会有这样的印象。您提出的建议没有任何意义,因为两个 **distinct** 模块不需要包含 **related** 包,但是没有什么可以阻止您这样做。 (2认同)
  • 虽然我尊重“没有子包这样的东西”的公平点,但我认为对于不了解完整规范的人来说,提出这个问题并期望得到参考文档或工作的答案是合法的例子。将其标记为一个完全不相关的问题的重复,从进一步的答案中关闭它,在我看来,也没有帮助(这是在空指针上,而不是迈克尔上)。有人建议 /sf/ask/3805969961/ 是这个问题的重复,但由于这个问题已经关闭,我在那里添加了一个详细的答案。 (2认同)