Java:基于用户输入加载类
我必须从用户那里获取类名并动态加载它Java:基于用户输入加载类,java,Java,我必须从用户那里获取类名并动态加载它 public class sample{ public static void main(String[] args) { if(args.length < 1) { print_usage(); } else{ Class inputClass = null; try { inputClass = Class.forName(args[
public class sample{
public static void main(String[] args) {
if(args.length < 1)
{
print_usage();
}
else{
Class inputClass = null;
try {
inputClass = Class.forName(args[0]);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
我想根据用户输入加载类,Sample2/Sample3类
我的文件在同一个目录中,但是我得到了java.lang.ClassNotFoundException错误。如何修复此错误?请更清楚地回答您的问题,我假设您键入的类名没有包。
如果它们在包中,则必须使用Class.forName
Class inputClass = null;
try {
inputClass = Class.forName("my.package.MyClass");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
你们的课程都打包了吗?您已将目录添加到类路径?谢谢!这就是问题所在。我没有给出包名。是否可以调用
inputClass
中定义的getter/setter/normal方法?我只能使用getDeclaredMethods()
获取已定义的方法,但我无法定义inputClass
的实例并调用传递参数的方法。您可以尝试使用newInstance()
。但这真的很邪恶。Method[]methods=inputClass.getMethods();方法[count].invoke(inputClass.newInstance(),inputString);我得到java.lang.InstanceionException。我调用的方法对吗?我知道问题出在哪里了。我已经定义了一个自定义构造函数,似乎只有在inputClass
Class inputClass = null;
try {
inputClass = Class.forName("my.package.MyClass");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}