从String获取类的types
我有一个String
,其名称为"Ex"
(没有.class
扩展名)。 我想把它分配给一个Class
variables,如下所示:
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。;
你可以使用Class
的forName
方法:
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 ,也许?