通过终端执行java实例方法

时间:2017-01-03 19:16:56

标签: java reflection terminal main

我有一个实例。基本结构是;

class Instance{

    public void load(){
        ...
    }

    public boolean execute(){
        ...
        return true;
    }

}

通常我们可以在static void main(String args[])中执行此实例,但我们如何执行此实例 - > load() - >来自终端或编译文件execute()的{​​{1}}在.class方法中被调用,而不是使用反射来执行已定义的方法。
因为这个实例就像一个项目上的脚本,但我们没有将main函数定义为类。

有人帮忙吗?

2 个答案:

答案 0 :(得分:1)

我建议您只需添加一个public static void main(String args[])来调用load()execute(),这样就可以通过常规方式从命令行执行您的类。通过构建一个只需要自己的public static void main(String args[])的基于反射的包装器,使问题过于复杂没有什么意义。

答案 1 :(得分:1)

  

我们如何执行此实例 - > load() - >从终端执行()

你不能。

它可能是implemented in Java 9,但目前还没有正式的方法从命令行运行方法。

  

或编译文件.class在main方法中调用而不是使用反射

如你所说,使用反射:

File pathToClass = new File("C:\\Some Folder\\");

Class<?> loaded = null;
try {
    ClassLoader loader = new URLClassLoader(new URL[] {pathToClass.toURL()});
    loaded = loader.loadClass("some.package.foo.Instance");
} catch(Exception e) {
    //do something
}

Object i = loaded.newInstance();
Method method = loaded.getMethod("execute");
Boolean returnValue = (Boolean) method.invoke(i);

我建议不要这样做 - 通常有一种更好的方法,它只是使一切都过于复杂。

相关问题