Java 9+ ではクラスとパッケージの上にモジュールのカプセル化が追加されました。パッケージを
module-info.java の
exports で明示的に公開しない限り、たとえ
public クラスであっても隠れたままです。ここでは、
requires で依存関係を宣言する方法、
exports
to で可視性を制限する方法、
module レベルと
private/
public の違い、そして「package ... is not visible」「cannot access ...」といったコンパイルエラーが、
exports や
requires の書き忘れを示してくれることを解説します。