0

リフレクションを使用してオブジェクトを作成できます。パッケージpにクラス「Employee」があるとしましょう

Employee emp = Employee.class.newInstance()  OR
Employee emp = (Employee)Class.forName("p.Employee").newInstance() 

上記のコード行は、Employeeのデフォルトまたは引数なしのコンストラクターを呼び出すことによってEmployeeオブジェクトを作成します。そして、Employeeのsetterを呼び出して、オブジェクトにいくつかの値を設定します

コンストラクター自体に値を与えることによって、つまりパラメーター化されたコンストラクターを呼び出すことによって、リフレクションを使用してオブジェクトを作成する方法はありますか?

4

2 に答える 2

2

Fooはい、引数として単一の文字列を受け入れるコンストラクターがあると仮定しましょう。次に、次のコードを使用すると、そのコンストラクターを使用するインスタンスが得られます。

Class<?> fooClass = Foo.class;
Constructor<?> constructor = fooClass.getConstructor(String.class);
Object obj = constructor.newInstance("hello");
于 2012-05-19T10:28:56.560 に答える
1

Class.getConstructorConstructorを見てください。

まず、パラメータータイプによって適切なコンストラクターを取得し、次にそのタイプの引数を使用してコンストラクターを呼び出します。

Constructor<Employee> constructor = Class.forName("p.Employee").getConstructor(Integer.class, String.class);
Employee employee = constructor.newInstance(1,"foo");
于 2012-05-19T10:33:28.103 に答える