![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
やりたい事は、メインクラスより、同階層の全パッケージを取得(A)、
(A)より同階層の全クラスを取得(B)、
(B)より同階層の全メソッドを取得といったような事です。
例えば
public class a {
public static void main(String args[]) {
全パッケージの取得
全クラスの取得
全メソッドの取得
}
}
みたいな感じに。
試行錯誤したのですが、その処理を行う事の出来るメソッドかどうかも良く分からないし、
コンパイルエラーになるばかりで実現が出来ません。
・メインクラスから同階層のパッケージを取得してパッケージ名を出力。
・メインクラスからxパッケージ内の同階層のクラスを取得してクラス名を出力。
・メインクラスからxパッケージにあるyクラス内のメソッドを取得してメソッド名を出力。
上記のようなめちゃくちゃシンプルなコードを挙げてご教示願います。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?5a7ff87)
No.3ベストアンサー
- 回答日時:
どういったことをされたいのか不明なので断片的な回答になってしまいますが、
自分のパッケージを取得するには
Class#getPackageでできます。
パッケージに属する全てのクラスを取得する方法は、残念ながら存じません。
クラスが持っているメソッドを取得するには、Class#getMethodsで取得できます。
一度、JavaDocを眺めてみては如何でしょう?
java.lang.*とか、java.lang.reflectあたりが参考になると思います。
あとは、リフレクションについても調べてみて下さい。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?5a7ff87)
No.2
- 回答日時:
>Class.forName("xxx.yyy")の部分がClassNotFoundExceptionで落ちてします。
これは、コンパイル時にでるエラーでしょうか?
実行時エラーだと思いますが。
もし、実行時エラーだとしたら該当クラスへのクラスパスが通ってません。
javaファイルとclassライブラリは別物です。
もう一度ご確認してみて下さい。
クラスパスに通っている全てのパッケージを取得するには、Package#getPackagesを使います。
クラスから、メソッドを取得するには、Class#getMethodsを使います。
しかし、残念ながらパッケージに属するクラスは取得できません。
というか、私は発見できませんでした。
有難うございます。
ClassNotFoundExceptionは例外処理を入れてないせいでした。
一度getInterface()でインターフェースを取得出来た時に例外処理をしていないと思ったのですが、
確認したら例外処理してました^^;
しかも良く考えたら、『クラスパスに通っている全てのパッケージを取得』になりますね。
どうにかして『メインクラスと同階層にある全てのパッケージを取得』などを
する事は可能なのでしょうか?
自分で作ったクラスやメソッドだけを取得したいなーという考えだったのですが。
メソッド名を取得してから実行させたい時など、
上記のような事がムリならリテラルしかないのでしょうか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?5a7ff87)
No.1
- 回答日時:
まず、どこまで出来ているのかコードを見せて下さい。
そしたら、どこが間違ってるかアドバイスできるかもしれません。
この回答への補足
ごめんなさい、何にも出来ていません。
Class cls = Class.forName("xxx");
Class[] clss = cls.getClasses();
System.out.println(clss[i].getName());
という感じで利用するのかな?というトコだけです。
パッケージもメソッドも。
でもコンパイルでClass.forName("xxx.yyy")の部分がClassNotFoundExceptionで落ちてします。
xxx.yyyで指定したクラスがあるにも関わらず落ちます。
因みにxxx.yyyの中身は
package xxx;
public class yyy {
public void test() {
System.out.println("abc");
}
}
といった物です。
パッケージが持ってこれればクラスを持って来れそうだし、
クラスを持ってこれればメソッドは持って来れそうという安直な考えより
とりあえずパッケージの取得とクラスの取得とメソッドの取得が
出来るコードを知りたいです。
別にそれらの処理を関連付けて頂く必要は一切ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(vba)他のアプリケーションの右...
-
継承後のメソッドでコントロー...
-
interface,extend,implementの...
-
VB DLLプロジェクトについて
-
c++でのヘッダーファイルの循環...
-
c# この高速化の方法あり?
-
「ラッパークラス」の存在意義...
-
デバッグ時に「Source not found」
-
Class.forName("org.postgresql...
-
インタフェース、クラスの継承...
-
Javaで下線
-
「IOException は対応する try ...
-
C# 「データが失なわれる可能性...
-
setTextについて
-
Strutsのバージョンアップによ...
-
メソッドの引数にクラス名を渡す
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
「タイプ初期化子が例外をスロ...
-
レコード件数の表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
「ラッパークラス」の存在意義...
-
(vba)他のアプリケーションの右...
-
抽象クラスをJUNITでテストする...
-
オーバーライドとラッパーの違い
-
C# 「データが失なわれる可能性...
-
【C#】クラスのコンストラクタ...
-
JTextFieldの入力制限
-
c++でのヘッダーファイルの循環...
-
vb.net 自作プロパティの削除に...
-
「継承されたメソッドの可視性...
-
ASP.NETでの共通コードの書き方...
-
Javaのインスタンス化の構文の...
-
Javaで下線
-
メソッドの引数にクラス名を渡す
-
VB DLLプロジェクトについて
-
C#からDLLを呼びたいのですが・...
-
インターフェース型の使い方が...
-
委譲って何ですか?
-
C# 継承の問題で programに示さ...
おすすめ情報