根据https://www.oracle.com/corporate/features/understanding-java-9-modules.html,Java模块系统引入了以下指令:
例如,
- exports,exports ... to
- uses
- provides ... with
- open,opens,opens ... to
例如,
exports <package>
是否允许外部模块使用反射访问导出包的所有public
,protected
,private
成员?其他指令呢?
uses
更多地涉及消耗服务实现,而provides
则涉及提供一种实现。 - Namanopens X to Y
这个声明为什么在文档中说模块内的代码具有反射访问权限[...]对于模块中的所有包
。访问权限不应该只限于包X
吗? - Gilimodule A { opens X to B; }
时... 在一个模块内,使用反射,所有包的类型/成员都是可访问的。但是module B {requires A;}
只能访问package X
中的所有类型/成员。 - Naman