ModuleLayer.Controller strongly references Module
Alan Bateman
Alan.Bateman at oracle.com
Mon Nov 29 09:29:26 UTC 2021
On 28/11/2021 22:29, Michał Kłeczek wrote:
> :
> It looks like ML.Controller.addExport(source, pn, target) does not update the target module ClassLoader view of exported packages in the default ClassLoader implementation (jdk.internal.loader.Loader).
> What is the reasoning behind such implementation? I am wondering now how useful Controller.addExport() really is...
>
The addXXX methods are about accessibility. In the case of addExports
then maybe you want to export an internal package so that code in a
module in the child layer can make use of (via reflection) public
classes in that package.
You are right that the addXXX methods doesn't do any magic for
visibility. For super advanced cases where someone is using their own
class loaders then they need to ensure that the class loader delegation
supports the readability graph. Same thing when they use addExports
where they may need to their class loaders to adjust their delegation to
support changes at run-time.
-Alan
More information about the jigsaw-dev
mailing list