从String获取类类型

时间:2010-03-09 12:03:00

标签: java class reflection

我有一个String,其名称为"Ex"(无.class分机)。我想将它分配给Class变量,如下所示:

Class cls = (string).class

我该怎么做?

6 个答案:

答案 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,也许?