根据https://www.oracle.com/corporate/features/understanding-java-9-modules.html,Java Module系统引入了以下指令:
- 出口,出口...到
- uses
- 提供...与
- 打开,打开,打开...
每个指令对使用反射访问内部成员的外部模块有什么影响(如果有)?
例如,是否exports <package>
允许外部模块访问所有public
, protected
, private
使用反射导出的包的成员?其他指令又如何呢?
我只想简单地引用#JLS7.7这里(由我格式化和分类):
与编译时访问和运行时访问不同,Java
SE 平台通过 Core Reflection API 提供反射访问(§1.4).
更多关于您的问题分类为正常模块(module foo
)和开放模块(open module bar
):
普通模块
A 普通模块授予反思性仅访问类型
那些显式导出或显式打开的包(或者
两个都)。
开放模块
An 开放模块授予反射访问权限输入其所有内容
包裹,就像所有包裹都被打开一样.
-
模块打开的包
对于代码在开放模块之外,授予的反射访问
输入模块打开的包(即,模块中的所有包)
模块)是这些包中的所有类型以及这些包的所有成员
类型.
-
在一个模块内
Code 模块内部享受反思性访问对于所有类型,
及其所有成员,在模块的所有包中.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)