特定のシナリオでは、次の場合でも、指定されたクラスのインスタンスを動的に作成する機能が必要になる場合があります。クラス名は実行時まで不明です。これにより、柔軟性が向上し、クラスが動的に読み込まれるシナリオが可能になります。
これを実現するには、Java が提供するリフレクション機能を利用できます。クラス名を使用してインスタンスを作成し、そのコンストラクターに引数を指定する方法は次のとおりです。
String className = "mypackage.MyClass"; Class<?> clazz = Class.forName(className); Constructor<?> ctor = clazz.getConstructor(String.class); Object object = ctor.newInstance(new Object[] { "MyAttributeValue" });
このコードでは、Class.forName メソッドを使用して、指定されたクラス名の Class オブジェクトを取得します。 getConstructor メソッドは、指定されたパラメーターの型を受け入れるコンストラクターを取得します。最後に、newInstance が呼び出されてクラスのインスタンスが作成され、指定された引数がコンストラクターに渡されます。
この方法では、パッケージまたは名前空間の情報を含む完全修飾クラス名を指定する必要があることに注意してください。質問に示されている例に示すように、ネストされたクラスにはドル記号 (「$」) を使用してアクセスできます。
以上がリフレクションとコンストラクター引数を使用して Java クラスを動的にインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。