从String获取类的types

我有一个String ,其名称为"Ex" (没有.class扩展名)。 我想把它分配给一个Classvariables,如下所示:

 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(); 

有关更多详细信息,请参阅http://java.sun.com/docs/books/tutorial/reflect/TOC.html上有关Reflection的Java教程path。;

你可以使用ClassforName方法:

  Class cls = Class.forName(clsName); Object obj = cls.newInstance(); 

eeh .. Class.forName(String classname)?

您可以在运行时通过Javareflection概念获取任何类的类引用。

检查下面的代码。 下面给出了解释:下面是使用返回的类创build一个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 output is The first time calls forName: static block in AClass AClass's Constructor The second time calls forName: //Calss has been loaded so there is not "static block in AClass" printing outThe second 

下面是Exaplaination

调用Class.ForName来获取一个Class对象

通过使用类对象,我们正在创build类的新实例。

任何怀疑这让我知道

不知道你在问什么,但是… Class.forname ,也许?