- 締切済み
クラス名一覧の取得
指定したパッケージ内にあるクラス名を取得する方法はないでしょうか? ただし、jarの場合もあります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jicchi2
- ベストアンサー率27% (5/18)
回答No.3
クラスパスに指定されたディレクトリ下にあるClassファイルや、JarファイルやZipファイル内に格納されているClassも全部ということですよね。これらのクラスは要求があって初めてロードされるのでそれらを取得するようなAPIはありません。 したがって、Fileとして自前で探すしかないでしょう。Classファイルはクラスパスのディレクトリからの相対パスでパッケージがわかります。JarファイルやZipファイルは、それらを読み書きできるAPIがあるのでそれを利用しエントリー名からパッケージ名もわかります。 また見つかったクラスが正当なものかどうかは、Class.forName(クラス名)でロードをしてみてみるというのもいいかもしれません。そうすれば、JavaのClass以外のファイルや、privateクラスなどスコープ外だった場合は例外が発生します。
お礼
やはり、それしかないですね。 ありがとうございました。