前提・実現したいこと
jarファイル外から意図したクラス隠ぺいする方法についての質問です。
外部システムにjarファイルを提供し、ライブラリとして利用してもらおうとしています。
各クラスの位置づけを分かりやすくするために、ライブラリ内でパッケージを分類したいのですが、例えば以下のようにパッケージを分け、以下の※に記載したような形でjarファイル外からの見た目を制約したいと思っています。
com.hogehoge
└HogeRepository.java(※ここに定義したクラスだけをjarファイル外部に見えるようにしたい)
com.hogehoge.dao
└HogeDao.java(※ここに定義したクラスはjarファイル外部から隠ぺいしたい)
com.hogehoge.dto
└HogeDTO.java(※ここに定義したクラスはjarファイル外部から隠ぺいしたい)
なお、public class HogeRepositoryの中でHogeDaoやHogeDTOはインスタンス化されます。
悩んでいること
HogeRepositoryからHogeDaoやHogeDTOを見えるようするためには、パッケージが違うので、class HogeDaoやclass HogeDTOをpublicで宣言するしかないように思っています。しかしそうすると、HogeDaoやHogeDTOが、jarファイル外部からも利用できるようになってしまいます。
パッケージを分けつつ、特定のクラスだけをjarファイル外部から隠ぺいする方法はないのでしょうか。
普通はこういった状況では、パッケージは分けないのでしょうか。パッケージを分けないとすると、クラスが沢山ある場合、構築時の見た目がごちゃっとしてしまいますが、そこは仕方ないのでしょうか。
パッケージを分けなければ意図した通りに構築できるとは思うのですが、普通はどうするものなのかが気になっています。
ご回答いただけると嬉しいです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー