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();
}