- PR -

特定のパッケージ名の中にあるクラス名の取得の仕方を教えてください。

1
投稿者投稿内容
ヤマケン
会議室デビュー日: 2007/09/10
投稿数: 5
投稿日時: 2007-09-10 09:25
どうもはじめまして、Javaの初心者です。

あのー、早速なのですが、どなたかご存知の方がいれば教えていただきたいのですが、
Javaで特定のパッケージの中にあるクラス名を全て取得する方法を教えてもらえないでしょうか・・・

いろいろと、試行錯誤を重ねたのですが、どうしても取得することができませんでした。

どなたか、ご存知の方がいらっしゃればよろしくお願いしますm(__)m
yos
常連さん
会議室デビュー日: 2004/08/24
投稿数: 27
投稿日時: 2007-09-10 10:13
コマンド・プロンプトから「javap」ではだめですか?
ヤマケン
会議室デビュー日: 2007/09/10
投稿数: 5
投稿日時: 2007-09-10 10:19
ご返答ありがとうございますm(__)m
それは、メソッド中から取得することができるのでしょうか??
できれば、動的に取得したいと思っています。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-09-10 10:50
java.lang.Packageには配下Classを取得するメソッドが存在しませんからね…。
ClassLoaderでも片端からClassを取得する機能は提供されていませんから、
自前でClassLoaderよろしくClassPath内を検索するしかないのではないでしょうか。
ヤマケン
会議室デビュー日: 2007/09/10
投稿数: 5
投稿日時: 2007-09-10 11:03
度々すみません。
初心者なもので、自前でClassLoader、ClassPath内を検索することが、
簡単なのか難しいのかすらわかりません・・・。

もし、参考になるサイトなどをご存知ならば教えていただけないでしょうか??
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-09-10 12:52
Systemクラスからクラスパスを取得することが出来ます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/System.html#getProperties()

これを元にフォルダ、もしくはjarファイルを走査して拡張子が.classのファイルを探します。
jarファイルの操作にはjava.util.jarパッケージのクラス郡を利用することが出来ます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/jar/package-summary.html

内部クラスを使っている場合などは
親クラス名$子クラス名.class
というクラス名になっているので取り扱いに注意しましょう。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-09-10 13:26
まじめにやると、
1.クラスパス取得
2.クラスローダ取得
3.クラスローダからパッケージのパスでURL取得
4.URLからエントリを取得
という感じになりますが、4がネックです。

ファイルシステムやJARならそれぞれのAPIで取得することになります。
ネットワーク経由などでは無理でしょう。

java.lang.Packageは先にクラスがありきなので、
(クラスがロードされたときに、初めてパッケージも定義されるため)
使うのはちょっと難しいかも。

どのみち作りこまなきゃいけないです。
ヤマケン
会議室デビュー日: 2007/09/10
投稿数: 5
投稿日時: 2007-09-10 17:43
皆さんありがとうございますm( _ _ )m

早速、教えていただいた方法で試してみたいと思います。
また、色々とわからないことを書き込むかもしれませんが、
これからも、よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)