2012-09-05 69 views
7

我想打印包中的所有类名称,并在每个包中打印相应的属性及其数据类型。如何将字符串类型转换为java中的类类型

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

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

所以我想要一个将“Classname”从String类型转换为Class类型的方法。我试过Class.forName(),但没有奏效。

+6

请指定Class.forName()如何“不起作用”。 – skiphoppy

+3

如果Class.forName()不起作用,它很有可能a)类名称不正确b)您收到错误消息,但不知道它是什么意思,因此您忽略了它。 ;) –

+1

发布你的错误信息!并在你尝试使用'Class.forName()'发布代码' –

回答

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

确保className是完全合格的类名像com.package.class另外,请分享你看到错误消息。

+0

是的,className不完全合格。 给予完全合格的名称,它的工作:) 谢谢:) –

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的实现。

0

请尝试以下操作。

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