[解決済み] リフレクションを使って、パッケージ内のすべてのクラスを見つけることができますか?
2022-03-16 20:08:50
質問
あるパッケージに含まれるすべてのクラスまたはインターフェースを見つけることは可能ですか?(例えば
Package
と言われると、そうでもないような気がする)
解決方法は?
クラスローダーは動的な性質を持っているため、これは不可能です。クラスローダーはVMにどのクラスを提供できるかを伝える必要はなく、代わりにクラスのリクエストを渡され、クラスを返すか例外を投げなければなりません。
しかし、自分でクラスローダーを書いたり、クラスパスやそのジャーを調べたりすれば、この情報を見つけることは可能です。しかし、これはファイルシステム操作によるものであり、リフレクションではありません。これを手助けしてくれるライブラリもあるかもしれない。
生成されるクラスやリモートで配信されるクラスがある場合、それらのクラスを発見することはできません。
通常の方法は、アクセスしたいクラスをどこかに登録しておくか、別のクラスで参照することになります。あるいは、命名規則に従ってください。
追記 リフレクションズライブラリ を使うと、現在のクラスパスにあるクラスを検索することができます。これはパッケージ内のすべてのクラスを取得するために使用することができます。
Reflections reflections = new Reflections("my.project.prefix");
Set<Class<? extends Object>> allClasses =
reflections.getSubTypesOf(Object.class);
関連
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] Pythonで現在のモジュール内のすべてのクラスのリストを取得するにはどうすればよいですか?
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] 英数字のランダムな文字列を生成する方法
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] Javaにおける静的クラス
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
jd-gui Java Exceptionが発生しました。
-
javaで非静的な解を静的な参照にすることができない
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
プロジェクトの依存関係を解決できなかった 解決
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
ローカルリソースのロードが許可されていない場合の解決策