- - PR -
特定のパッケージ名の中にあるクラス名の取得の仕方を教えてください。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-09-10 09:25
どうもはじめまして、Javaの初心者です。
あのー、早速なのですが、どなたかご存知の方がいれば教えていただきたいのですが、 Javaで特定のパッケージの中にあるクラス名を全て取得する方法を教えてもらえないでしょうか・・・ いろいろと、試行錯誤を重ねたのですが、どうしても取得することができませんでした。 どなたか、ご存知の方がいらっしゃればよろしくお願いしますm(__)m |
|
投稿日時: 2007-09-10 10:13
コマンド・プロンプトから「javap」ではだめですか?
|
|
投稿日時: 2007-09-10 10:19
ご返答ありがとうございますm(__)m
それは、メソッド中から取得することができるのでしょうか?? できれば、動的に取得したいと思っています。 |
|
投稿日時: 2007-09-10 10:50
java.lang.Packageには配下Classを取得するメソッドが存在しませんからね…。
ClassLoaderでも片端からClassを取得する機能は提供されていませんから、 自前でClassLoaderよろしくClassPath内を検索するしかないのではないでしょうか。 |
|
投稿日時: 2007-09-10 11:03
度々すみません。
初心者なもので、自前でClassLoader、ClassPath内を検索することが、 簡単なのか難しいのかすらわかりません・・・。 もし、参考になるサイトなどをご存知ならば教えていただけないでしょうか?? |
|
投稿日時: 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 というクラス名になっているので取り扱いに注意しましょう。 |
|
投稿日時: 2007-09-10 13:26
まじめにやると、
1.クラスパス取得 2.クラスローダ取得 3.クラスローダからパッケージのパスでURL取得 4.URLからエントリを取得 という感じになりますが、4がネックです。 ファイルシステムやJARならそれぞれのAPIで取得することになります。 ネットワーク経由などでは無理でしょう。 java.lang.Packageは先にクラスがありきなので、 (クラスがロードされたときに、初めてパッケージも定義されるため) 使うのはちょっと難しいかも。 どのみち作りこまなきゃいけないです。 |
|
投稿日時: 2007-09-10 17:43
皆さんありがとうございますm( _ _ )m
早速、教えていただいた方法で試してみたいと思います。 また、色々とわからないことを書き込むかもしれませんが、 これからも、よろしくお願いします。 |
1