Java反射,类对象
我的目标是在命令行中读入我希望观察的类的名称。当我在运行前知道类名时,我没有问题。我似乎无法管理的是如何基于字符串输入创建类对象Java反射,类对象,java,class,reflection,Java,Class,Reflection,我的目标是在命令行中读入我希望观察的类的名称。当我在运行前知道类名时,我没有问题。我似乎无法管理的是如何基于字符串输入创建类对象 public class Tester { static void methodInfo2(Object obj) throws ClassNotFoundException { //some stuff System.out.print("Test!"); } public static
public class Tester {
static void methodInfo2(Object obj) throws ClassNotFoundException {
//some stuff
System.out.print("Test!");
}
public static void main (String args[]) throws ClassNotFoundException{
String className = args[0];
System.out.println("Class: "+className);
//myclass2 mc = new myclass2();
//Class c = mc.getClass();
Class argClass = Class.forName(className);
try {
methodInfo2(argClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
main方法中注释掉的两行显示了我在编译之前知道类名时所做的工作。下面未注释的行显示了我认为应该工作的内容,但我收到一个ClassNotFoundException。这个班当然存在,所以我不确定我有什么问题 两个建议:
“java.lang.Thread”
,而不仅仅是“Thread”
)Class.forName
是在运行时按名称加载类的正确方法
要么你的论点是错误的,要么你的类不在类路径中。谢谢你的快速回复!对于那些后来发现这个主题的人,我的问题是我想要的类,我在elcipse的包中定义了我自己。修复方法是将包名附加到类名的开头:“packageName.myclass2”