2

文字列から Java オブジェクトを作成したいとします。

Object obj = Class.forName("com.my.object.MyObject").newInstance();

MyObject を作成できました。私の質問は、文字列から Long や String などの Java 組み込みオブジェクトを作成する方法です。実行時にオブジェクトのタイプをテキスト形式でしか知ることができないため、これを行う必要があります。

私はこれをしましたが、うまくいきませんでした。

Object obj = Class.forName("java.lang.Long").newInstance();
4

2 に答える 2

11

java.lang.Long引数のないコンストラクターがないため、そのように呼び出すことはできませんnewInstance。代わりに、正しい引数を使用してコンストラクターを検索し、引数配列を作成してから、コンストラクターを呼び出す必要があります。

Constructor constr = Class.forName("java.lang.Long").getConstructor(String.class);
Object myLong = constr.invoke("5");
于 2013-04-24T17:29:33.130 に答える
4

のドキュメントを読むnewInstance()と、クラスのパラメーターなしのコンストラクターを呼び出すことがわかります。組み込み (またはその他の) クラスにそのようなコンストラクターがある場合は、同じように作成できます。それ以外の場合は、を使用して特定のコンストラクターを呼び出しClass.getConstructor()、適切なパラメーターを渡す必要があります。new Long(String)たとえば、コンストラクターを呼び出すには、次のようにします。

Class.forName("java.lang.Long")
     .getConstructor(String.class)
     .newInstance("12345");
于 2013-04-24T17:30:36.517 に答える