Je citerai simplement le #JLS7.7 ici (formaté et catégorisé par moi) :
Distincte de l'accès au moment de la compilation et de l'accès au moment de l'exécution, la plate-forme Java SE fournit (§1.4) .
Pour répondre à votre question, il faut classer le module Normal ( module foo
) et le module Open ( open module bar
) :
Module normal
A module normal subventions réfléchies a les paquets qui sont explicitement exportés ou explicitement ouverts. (ou les deux).
-
les paquets exportés du module ( exports com.example.foo.bar
)
Pour code en dehors d'un module normal l'accès réfléchi accordé à types dans les paquets exportés (et non ouverts) du module est spécifiquement à la public
y protected
ty p e le site public
y protected
membres de ces types.
-
les paquets ouverts du module ( opens com.example.foo.internal to com.example.bar
)
T accordé aux types dans les paquets ouverts du module (exportés ou non) est de non) est tous les types dans ces packs types .
Aucun accès réfléchi n'est accordé paquets qui ne sont pas exportés ou ouverts .
-
à l'intérieur d'un module
Le code à l'intérieur du module bénéficie d'un accès réfléchi à tous les types, et a paquets du module .
Module ouvert
Un site module ouvert accorde un accès réfléchi t paquets, comme si tous les paquets avaient été ouverts .