java.lang.Object
java.lang.ModuleLayer.Controller
- Enclosing class:
ModuleLayer
Controls a module layer. The static methods defined by
ModuleLayer
to create module layers return a Controller
that can be used to
control modules in the layer.
Unless otherwise specified, passing a null
argument to a
method in this class causes a NullPointerException
to be thrown.
- API Note:
- Care should be taken with
Controller
objects, they should never be shared with untrusted code. - Since:
- 9
-
Method Summary
Modifier and TypeMethodDescriptionaddExports
(Module source, String pn, Module target) Updates modulesource
in the layer to export a package to moduletarget
.Updates modulesource
in the layer to open a package to moduletarget
.Updates modulesource
in the layer to read moduletarget
.enableNativeAccess
(Module target) Restricted.Enables native access for a module in the layer if the caller's module has native access.layer()
Returns the layer that this object controls.
-
Method Details
-
layer
-
addReads
Updates modulesource
in the layer to read moduletarget
. This method is a no-op ifsource
already readstarget
.- Implementation Note:
- Read edges added by this method are weak
and do not prevent
target
from being GC'ed whensource
is strongly reachable. - Parameters:
source
- The source moduletarget
- The target module to read- Returns:
- This controller
- Throws:
IllegalArgumentException
- Ifsource
is not in the module layer- See Also:
-
addExports
Updates modulesource
in the layer to export a package to moduletarget
. This method is a no-op ifsource
already exports the package to at leasttarget
.- Parameters:
source
- The source modulepn
- The package nametarget
- The target module- Returns:
- This controller
- Throws:
IllegalArgumentException
- Ifsource
is not in the module layer or the package is not in the source module- See Also:
-
addOpens
Updates modulesource
in the layer to open a package to moduletarget
. This method is a no-op ifsource
already opens the package to at leasttarget
.- Parameters:
source
- The source modulepn
- The package nametarget
- The target module- Returns:
- This controller
- Throws:
IllegalArgumentException
- Ifsource
is not in the module layer or the package is not in the source module- See Also:
-
enableNativeAccess
enableNativeAccess
is a restricted method of the Java platform.Restricted methods are unsafe, and, if used incorrectly, might crash the JVM or result in memory corruption.Enables native access for a module in the layer if the caller's module has native access.- Parameters:
target
- The module to update- Returns:
- This controller
- Throws:
IllegalArgumentException
- Iftarget
is not in the module layerIllegalCallerException
- If the caller is in a module that does not have native access enabled- Since:
- 22
-
enableNativeAccess
when access to restricted methods is enabled.