2017-11-23 10 views
0

プロジェクト内のすべてのクラスを通過し、クラス内の静的変数として宣言された名前または何らかのタイプの注釈によって宣言された名前で初期化する関数を作成する方法はありますか?Java - デフォルト名のすべてのクラスを初期化するイテレータ

私は心の中でこのようなものがあります:

int i = 0; 
Class[] classes = getAllClasses(); 
while(classes[i] != null){ 
    String name = classes[i].getName(); 
    name classname = classes[i](); 
    i++; 
} 

は、事前にありがとうございます。

答えて

0

を名前でクラスを取得し、彼らのインスタンスを作成しようとすることができます:

public Object[] init(String... classNames) 
     throws ClassNotFoundException, IllegalAccessException, InstantiationException 
{ 
    Object[] instances = new Object[classNames.length]; 
    for(int i = 0; i < classNames.length; i++){ 
     // try to obtain class instance by name 
     Class<?> cls = Class.forName(classNames[i]); 
     // this call require public no args constructor 
     instances[i] = cls.newInstance(); 
    } 
    return instances; 
} 
関連する問題