Reflection APIを使用して実行できます。
Class<?> klazz = Class.forName("javax.swing.JPanel");
JPanel panel = (JPanel) klazz.newInstance();
完全修飾クラス名をメソッドに渡す必要があることに注意してくださいforName()
。また、ある時点で (型パラメーターとして、Class<?>
または上記のコードのようにキャストを使用して)、そのクラスを明示的に指定する必要があることに注意してください。インスタンス化するつもりです。または、インスタンスの正確なタイプを気にしない場合は、次のようにするだけです。
Object obj = klazz.newInstance();
また、クラスで引数なしのコンストラクターが定義されていると想定しています。そうでない場合はConstructor
、新しいオブジェクトをインスタンス化する前に、まずオブジェクトを作成する必要があります。
Class<?> klazz = Class.forName("javax.swing.JPanel");
Constructor<?> constructor = klazz.getDeclaredConstructor(/* parameter types */);
JPanel panel = (JPanel) constructor.newInstance();