我有一个String
,其名称为"Ex"
(无.class
分机)。我想将它分配给Class
变量,如下所示:
Class cls = (string).class
我该怎么做?
答案 0 :(得分:146)
Class<?> cls = Class.forName(className);
但您的className
应该是完全合格的 - 即com.mycompany.MyClass
答案 1 :(得分:38)
String clsName = "Ex"; // use fully qualified name
Class cls = Class.forName(clsName);
Object clsInstance = (Object) cls.newInstance();
查看http://java.sun.com/docs/books/tutorial/reflect/TOC.html上的反思的Java Tutorial路径以获取更多详细信息。
答案 2 :(得分:6)
您可以使用forName
的{{1}}方法:
Class
答案 3 :(得分:4)
您可以在运行时通过Java Reflection Concept获取任何类的Class引用。
检查以下代码。解释如下:
以下是使用返回的Class创建AClass实例的一个示例:
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:
该类已经加载,因此在AClass中没有第二个“静态块”
说明如下
调用Class.ForName以获取类对象
通过使用Class对象,我们正在创建Class的新实例。
对此有任何疑问让我知道
答案 4 :(得分:3)
eeh .. Class.forName(String classname)?
答案 5 :(得分:2)
不确定你在问什么,但是...... Class.forname,也许?