2016-06-17 14 views
0

私のプログラムをコンパイルした後、クラスパスにクラスを追加する必要があります。アックスクラスのJavaのリフレクションとクラスローダー

Class NewUnit; 
Constructor constructor; 

ClassLoader myClassLoader = ClassLoader.getSystemClassLoader(); 

// Define a class to be loaded. 
String classNameToBeLoaded = "monarchs_project.Axe"; 

NewUnit = myClassLoader.loadClass(classNameToBeLoaded); 

constructor = NewUnit.getConstructor(int.class, int.class, int.class, int.class); 

NewUnit newUnit = (NewUnit) constructor.newInstance(1, 1, 1, 1); 

パラメータがintである:

そして、私は以下のコードのように、JavaリフレクションとClassLoaderを使用します。

しかし、動作しません。メソッドgetConstructor()は機能しません。おかげさまで

答えて

0

int.classは有効なクラスではありません。基本型のクラス・オブジェクトを取得するには、ラッパー・クラス内でタイプ静的変数を使用する必要があります。 getConstructorを呼び出すと、次のようになります。

コンストラクタ= NewUnit.getConstructor(java.lang.Integer.TYPE、java.lang.Integer.TYPE、java.lang.Integer.TYPE);

+0

ありがとうございます!今それは動作します! – user3294746

+0

コンストラクタは現在動作していますが、newUnitオブジェクトにクラスのインスタンスを作成することはできません。 IDEは「プロジェクトにNewUnitクラスを作成する」と言っています。 私はこれでこれを解決します: オブジェクトnewUnit = constructor.newInstance(0、0、0、0); – user3294746

関連する問題