[解決済み】クラス名でインスタンスを作成し、コンストラクタを呼び出す場合
2022-04-14 01:55:41
質問
クラス名(dynamic)を指定して、そのコンストラクタにパラメータを渡して、特定のクラスのインスタンスを作成する方法はありますか?
のようなものです。
Object object = createInstance("mypackage.MyClass","MyAttributeValue");
ここで
"MyAttributeValue"
のコンストラクタへの引数です。
MyClass
.
解決方法は?
はい、そのようなものです。
Class<?> clazz = Class.forName(className);
Constructor<?> ctor = clazz.getConstructor(String.class);
Object object = ctor.newInstance(new Object[] { ctorArgument });
もちろん、これは単一の文字列パラメータに対してのみ機能しますが、かなり簡単に修正することができます。
クラス名は、名前空間を含む完全修飾名でなければならないことに注意してください。ネストされたクラスでは、ドルを使う必要があります(コンパイラがそれを使うからです)。たとえば、以下のようになります。
package foo;
public class Outer
{
public static class Nested {}
}
を取得するために
Class
オブジェクトが必要です。
Class.forName("foo.Outer$Nested")
.
関連
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] Mapを実装し、挿入順序を保持するJavaクラス?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] init-paramとcontext-param
-
[解決済み] Java: getInstanceとStaticの比較
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] .lengthが解決できない、またはフィールドでない