たとえば、プロジェクトでサードパーティの jar を使用していてA.jar
、一部のメンバー (クラス、メソッドなど) がデフォルトのアクセス (パッケージ プライベート) であるとします。これで、プロジェクトで同じパッケージ名を作成すると、A.jar からデフォルトのアクセス修飾子を使用してメンバーにアクセスできます (Eclipse の Java プロジェクトでこれを試しました)。
オラクルのドキュメントには次のように書かれています。
クラスに修飾子がない場合 (デフォルト、package-private とも呼ばれます)、そのクラスは独自のパッケージ内でのみ表示されます。
A.jar
パッケージ内のクラスのみがこの特定のメンバーにアクセスすることを望んでい
たため、開発者が意図したものではないことを考えると、この特定のユース ケース (リフレクションを使用しない場合も同様) では、この哲学に違反していませんか?
また、package-private は便利なメカニズムですが、データの保護などには使用できないということですか?