• 締切済み

クラス名一覧の取得

指定したパッケージ内にあるクラス名を取得する方法はないでしょうか? ただし、jarの場合もあります。 よろしくお願いします。

みんなの回答

  • jicchi2
  • ベストアンサー率27% (5/18)
回答No.3

クラスパスに指定されたディレクトリ下にあるClassファイルや、JarファイルやZipファイル内に格納されているClassも全部ということですよね。これらのクラスは要求があって初めてロードされるのでそれらを取得するようなAPIはありません。 したがって、Fileとして自前で探すしかないでしょう。Classファイルはクラスパスのディレクトリからの相対パスでパッケージがわかります。JarファイルやZipファイルは、それらを読み書きできるAPIがあるのでそれを利用しエントリー名からパッケージ名もわかります。 また見つかったクラスが正当なものかどうかは、Class.forName(クラス名)でロードをしてみてみるというのもいいかもしれません。そうすれば、JavaのClass以外のファイルや、privateクラスなどスコープ外だった場合は例外が発生します。

OhMabu
質問者

お礼

やはり、それしかないですね。 ありがとうございました。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

Ano.1です。 ごめんなさい。逆ですね。パッケージからクラスですね。 それは多分無理だとおもいます。 JAVAは継承(ExtendsやInterface)ということもできますので、該当パッケージの支配下のクラスという見方ができないんじゃないかとおもいます。 その証拠に、ま逆の事「そのクラスローダが認識するパッケージ一覧取得」ができたりしますし。

OhMabu
質問者

お礼

ありがとうございました。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

Class#getPackage(); では駄目ですか?

関連するQ&A

専門家に質問してみよう