1. ホーム

[解決済み】Javaで与えられたクラスのすべてのサブクラスを見つけるにはどうすればよいですか?

2022-04-09 22:51:42

質問

Javaで、あるクラスのすべてのサブクラス(またはあるインターフェースのすべての実装者)を見つけようとする場合、どのようにしたらよいでしょうか。 今のところ、私はこれを行うためのメソッドを持っていますが、私はそれが(控えめに言っても)非常に非効率的であることがわかります。 その方法とは

  1. クラスパス上に存在するすべてのクラス名のリストを取得する
  2. 各クラスを読み込み、それが目的のクラスやインターフェースのサブクラスまたは実装者であるかどうかをテストします。

Eclipseには、これを効率的に表示する「タイプヒエラルキー」という素晴らしい機能があります。 プログラム的にこれを行うにはどうしたらよいでしょうか?

どのように解決するのですか?

ご指摘の方法以外にはありません。考えてみてください。クラスパス上の各クラスをスキャンすることなく、どのクラスがClassXを拡張しているのか、誰がどうやって知ることができるでしょうか?

Eclipseは、quot;Display in Type Hierarchy"ボタンを押した時点ですでにすべての型データが読み込まれているので、スーパークラスとサブクラスについて、一見効率的な時間で伝えることができます(常にクラスをコンパイルしているので、クラスパス上のすべてについて知っているためなど)。