Accessibility
Accessibility is the other side of the Java modularity coin. If the readability relationship specifies what modules can read a given module, accessibility indicates what they actually do get when they read it. Not everything in a module is accessible to the other modules that read it. Only the public types in packages that are marked with an exports
declaration are.
Thus, for a type in module B to be accessible in module A, the following needs to happen:
- Module A needs to read module B
- Module B needs to export the package that contains the type
- The type itself should be
public
Let's look at an example and examine the readability and accessibility relationships. Consider two modules, app
and lib
. Module app
has a requires
qualifier for module lib
. Module lib
exports its package lib.external
:
module app { requires lib; } module lib { exports lib.external; }
Let's say the lib
module has the following structure:

It has two packages--lib.external
and lib...