Module access question

Alex Buckley alex.buckley at oracle.com
Fri Apr 2 15:24:03 PDT 2010


Yes, just make the types in foo.impl be module-private via the "module" 
keyword. They can extend/implement the public types in foo.api, but will 
be inaccessible to types outside the foo module. Of course there will 
probably be some public factory or other entry point in foo.impl to get 
things going.

Note that the "module" accessibility level is a feature of JSR 294, but 
which types are in which module is a property of the module system you 
are using. In the RI of JSR 294, javac determines which types are in the 
"foo" module versus in other modules based on the modulepath.

Alex

On 4/2/2010 3:16 PM, Riaz A Aimandi wrote:
> Hi,
> 
> I have a quick question regarding modules.
> 
> Lets say I have a module that has both API & Implementation (in 
> different packages)
> 
> Is it possible to restrict access from other modules to API only (both 
> at compile & runtime) ?
> 
> i.e., disallow implementation classes to be directly accessed from other 
> modules.
> 
> Example:
>     Module foo:
>     package foo.api.* : has API
>     package foo.impl.* has Implementation
> 
>     I want to restrict direct access to foo.impl.* from any module that 
> requires this module.
> 
> I understand that with multiple modules this could be easily done. But I 
> am hoping that I do not have to breakup modules just for this purpose.
> 
> Thanks,
> 
> - riaz



More information about the jigsaw-dev mailing list