2016-12-02 19 views
2

私はすべてのクラスの配列を自分のプロジェクトに格納したいと思っています。それを行う簡単な方法はありますか?プロジェクト内の既存のクラスのリストを派生させるにはどうすればよいですか?

Class<?>[] classes = SomeClass.getClasses(); 

ありがとうございます。

EDIT: メインクラスのコードは次のとおりです。

package game_engine.main; 

public abstract class Main { 
    public static void main(String[]args){ 
     //do something 
    } 
    protected abstract void start(GameSettings settings); 
} 
+1

は、「すべてのクラス」を定義し –

+0

はあなたがこれを行う必要がある理由として、いくつかの洞察力を与えるだろうか? [XY問題](http://xyproblem.info/) – 4castle

+0

[リフレクションを使用してパッケージ内のすべてのクラスを見つけることができますか?](http://stackoverflow.com/q/520328/5221149) – Andreas

答えて

0

簡単な方法はありません。これを行うには、ポータブルな方法では実行できないクラスパスをスキャンする必要があります。 GoogleのGuavaにはClassPathがありますが、これは生産上重要な作業には使用しないことが明示されています。

0

私はそれを1行のコードで行うことはできません。しかし、これはまた、役立つことがあります。

//scan urls that contain 'my.package', include inputs starting with 'my.package', use the default scanners 
Reflections reflections = new Reflections("my.package"); 

//or using ConfigurationBuilder 
new Reflections(new ConfigurationBuilder() 
.setUrls(ClasspathHelper.forPackage("my.project.prefix")) 
.setScanners(new SubTypesScanner(), 
       new TypeAnnotationsScanner().filterResultsBy(optionalFilter), ...), 
.filterInputsBy(new FilterBuilder().includePackage("my.project.prefix")) 
...); 

詳細:https://github.com/ronmamo/reflections

+0

私は試しましたそれ以前にはリフレクションを使用していましたが、gitからクローンを作成しなかったため、クラスをインポートできなかったため、intellijはインポートできませんでした。プロジェクトにgithubリポジトリを追加するにはどうすればいいですか? –

+0

あなたはmavenまたはgradleを使用していませんか? –

+0

いいえいいチュートリアルを参照できますか? –

関連する問題