4

Javaプロジェクトのすべてのパッケージのすべてのクラスを印刷したいと思っています。たとえば、プロジェクトに含まれているとしましょう

Package1.Class1
Package1.Class2
Package1.Class3
Package2.Class1
Package2.Class2

これらのパッケージとクラスをすべて印刷したいと思います。次のコードを使用して、それらをリストすることができますが、Package.Class c = new Package.Class();

これが私が使おうとしているコードです:

Package[] pa = Package.getPackages();
for (int i = 0; i < pa.length; i++) {
    Package p = pa[i];
    System.out.print("\"" + p.getName() + "\", ");
}

私がこれをどのように行うことができるかについて何か考えはありますか?

皆さんありがとう

4

2 に答える 2

3

クラスローダーの動的な性質のため、簡単な方法はありません。

ただし、反射ライブラリを見ることができます: http://code.google.com/p/reflections/

これにより、現在のクラスパスでクラスを検索できます。

そのライブラリを使用すると、次のようなことを試すことができます。

 Reflections reflects = new Reflections("my.project.prefix");

 Set<Class<? extends Object>> allClasses = 
 reflects.getSubTypesOf(Object.class);
于 2013-01-01T19:38:36.367 に答える
2

reflectionsを使用するか、クラスパスを解析して、個々のフォルダーやjarファイルに分割し、それぞれをウォークしてパッケージを一覧表示します。しかし、それはリフレクションライブラリを使用するよりもはるかに複雑です。

于 2013-01-01T19:42:38.243 に答える