如何在java中将String类型转换为Class类型

时间:2012-09-05 17:37:07

标签: java

我想在包中打印所有类名,并在每个包中打印相应的属性及其数据类型。

在一个代码中,我能够以字符串的形式获取类名。 在另一个代码中,我可以使用Classname.class.getAttribute();

获取属性及其数据类型

但是我想合并这两个代码。由于在第一个代码中我以字符串的形式获得了类名,因此我无法使用Classname.class.getAttribute(),因为此处Classname的类型为String

所以我想要一个将“Classname”从String类型转换为Class类型的方法。

我试过了Class.forName(),但它没有用。

3 个答案:

答案 0 :(得分:18)

Class<?> classType = Class.forName(className);

确保className是完全限定的类名,例如com.package.class此外,请分享您看到的错误消息。

答案 1 :(得分:1)

如果类的完全限定名称可用,则可以使用静态方法Class.forName()获取相应的Class。

例如:

Class c = Class.forName("com.duke.MyLocaleServiceProvider"); 
  

注意:确保您为该函数提供的参数是完全限定的类名,如com.package.class

Check here以供参考。

修改

您也可以尝试使用loadClass()方法。

例如:

 ClassLoader cl;
 Class c = cl.loadClass(name);

Java虚拟机调用它来解析类引用。

<强>语法:

public Class<?> loadClass(String name)
                   throws ClassNotFoundException

For details on ClassLoader check here

Here 是ClassLoader的实现。

答案 2 :(得分:0)

请尝试以下方式。

String str = "RequiredClassName";    
Class <?> Cref = Class .forName("PackageNaem."+str );