15

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

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

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

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

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

4

3 回答 3

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

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

于 2012-09-05T17:42:13.417 回答
1

如果一个类的全名可用,则可以使用静态方法 Class.forName() 获取对应的 Class。

例如:

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

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

检查here以获取任何参考。

编辑:

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

例如:

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

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

句法:

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

有关 ClassLoader 的详细信息,请查看此处

是 ClassLoader 的一个实现。

于 2012-09-05T18:01:55.943 回答
0

请尝试如下。

String str = "RequiredClassName";    
Class <?> Cref = Class .forName("PackageNaem."+str );
于 2017-07-24T11:06:40.027 回答