java.lang.Object
java.lang.ModuleLayer.Controller
- 封装类:
-
ModuleLayer
控制模块层。由
ModuleLayer
定义的静态方法用于创建模块层,返回一个Controller
,可用于控制层中的模块。
除非另有说明,在此类中向方法传递null
参数会导致抛出NullPointerException
。
- API 注意:
-
应谨慎处理
Controller
对象,不应与不受信任的代码共享。 - 自 JDK 版本:
- 9
-
Method Summary
Modifier and TypeMethodDescriptionaddExports
(Module source, String pn, Module target) 更新层中的模块source
,将一个包导出到模块target
。更新层中的模块source
,将一个包开放给模块target
。更新层中的模块source
,读取模块target
。enableNativeAccess
(Module target) 预览。如果调用者的模块具有本地访问权限,则为层中的模块启用本地访问。layer()
返回此对象控制的层。
-
Method Details
-
layer
返回此对象控制的层。- 返回:
- 模块层
-
addReads
更新层中的模块source
,读取模块target
。如果source
已经读取target
,则此方法不执行任何操作。- 实现注意:
-
此方法添加的读取边是弱引用,当
source
是强引用时,不会阻止target
被 GC 回收。 - 参数:
-
source
- 源模块 -
target
- 要读取的目标模块 - 返回:
- 此控制器
- 抛出:
-
IllegalArgumentException
- 如果source
不在模块层中 - 参见:
-
addExports
更新层中的模块source
,将一个包导出到模块target
。如果source
已经将该包导出至至少target
,则此方法不执行任何操作。- 参数:
-
source
- 源模块 -
pn
- 包名称 -
target
- 目标模块 - 返回:
- 此控制器
- 抛出:
-
IllegalArgumentException
- 如果source
不在模块层中或包不在源模块中 - 参见:
-
addOpens
更新层中的模块source
,将一个包开放给模块target
。如果source
已经将该包开放至至少target
,则此方法不执行任何操作。- 参数:
-
source
- 源模块 -
pn
- 包名称 -
target
- 目标模块 - 返回:
- 此控制器
- 抛出:
-
IllegalArgumentException
- 如果source
不在模块层中或包不在源模块中 - 参见:
-
enableNativeAccess
enableNativeAccess
是 Java 平台的预览 API。预览功能可能会在将来的版本中被移除,或升级为 Java 平台的永久功能。如果调用者的模块具有本地访问权限,则为层中的模块启用本地访问。此方法是受限制的。受限制的方法是不安全的,如果使用不正确,可能会导致 JVM 崩溃,甚至更糟的是,悄无声息地导致内存损坏。因此,客户端应避免依赖受限制的方法,并尽可能使用安全且受支持的功能。
- 参数:
-
target
- 要更新的模块 - 返回:
- 此控制器
- 抛出:
-
IllegalArgumentException
- 如果target
不在模块层中 -
IllegalCallerException
- 如果调用者所在的模块未启用本地访问权限 - 自 JDK 版本:
- 20
-
enableNativeAccess
。