クラス名が"Ex"
(拡張子.class
なし)のString
があります。次のように、Class
変数に割り当てたい:
Class cls = (string).class
どうやってやるの?
Class<?> cls = Class.forName(className);
ただし、className
は完全に修飾する必要があります。つまり、com.mycompany.MyClass
String clsName = "Ex"; // use fully qualified name
Class cls = Class.forName(clsName);
Object clsInstance = (Object) cls.newInstance();
詳細については、Java Reflectionのチュートリアルトレイル http://Java.Sun.com/docs/books/tutorial/reflect/TOC.html を参照してください。
forName
のClass
メソッドを使用できます。
Class cls = Class.forName(clsName);
Object obj = cls.newInstance();
Java Reflection Concept。を使用して、実行時にクラスのクラス参照を取得できます。
以下のコードを確認してください。以下に説明します
以下は、返されたClassを使用してAClassのインスタンスを作成する1つの例です。
package com.xyzws;
class AClass {
public AClass() {
System.out.println("AClass's Constructor");
}
static {
System.out.println("static block in AClass");
}
}
public class Program {
public static void main(String[] args) {
try {
System.out.println("The first time calls forName:");
Class c = Class.forName("com.xyzws.AClass");
AClass a = (AClass)c.newInstance();
System.out.println("The second time calls forName:");
Class c1 = Class.forName("com.xyzws.AClass");
} catch (ClassNotFoundException e) {
// ...
} catch (InstantiationException e) {
// ...
} catch (IllegalAccessException e) {
// ...
}
}
}
印刷出力は
The first time calls forName:
static block in AClass
AClass's Constructor
The second time calls forName:
クラスはすでにロードされているため、2番目の「AClassの静的ブロック」はありません。
説明は以下です
Class.ForNameは、クラスオブジェクトを取得するために呼び出されます
クラスオブジェクトを使用して、クラスの新しいインスタンスを作成しています。
これについて疑問がある場合はお知らせください
eeh .. Class.forName(String classname)?
あなたが何を求めているのかわかりませんが、... Class.forname 、多分?