我想在包中打印所有类名,并在每个包中打印相应的属性及其数据类型。
在一个代码中,我能够以字符串的形式获取类名。
在另一个代码中,我可以使用Classname.class.getAttribute();
但是我想合并这两个代码。由于在第一个代码中我以字符串的形式获得了类名,因此我无法使用Classname.class.getAttribute()
,因为此处Classname
的类型为String
。
所以我想要一个将“Classname”从String
类型转换为Class
类型的方法。
我试过了Class.forName()
,但它没有用。
答案 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 );