2

我在 JLS 中找不到任何提及,它只讨论了编译单元在未命名包中时如何放置在未命名模块中。

背景:许多库需要用户代码将具有特定名称的配置文件放入未命名(默认)包中。我想知道 JLS 是否保证ClassLoader::getSystemResourceAsStream在使用模块时可以找到这些资源。它似乎工作,但我想有一个来源。

这是有道理的,因为没有 for 的语法opens "",所以明确的唯一方法是打开模块本身。

4

1 回答 1

1

我认为这很清楚。

未命名模块导出其普通编译单元与该未命名模块相关联的每个包。

未命名的模块会打开其普通编译单元与该未命名模块相关联的每个包。

关于协会:

主机系统必须将未命名包中的普通编译单元与未命名模块(第 7.7.5 节)相关联,而不是命名模块。

资源

注意:这里说的是导出包,不是导出编译单元,所以包中的资源都包含在这个语句中。

于 2019-09-27T10:12:38.620 回答