通过终端执行java示例方法

a9wyjsp7  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(461)

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

class Instance{

    public void load(){
        ...
    }

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

}

通常我们可以在 static void main(String args[]) 但是我们如何执行这个示例-> load() -> execute() 从终端或编译文件 .class 在一个 main 方法,而不是使用反射来执行定义的方法。
因为这个示例的行为类似于out项目上的脚本,但我们并没有将main函数定义到类中。
有人帮忙吗?

f8rj6qna

f8rj6qna1#

我建议只添加一个 public static void main(String args[]) 这叫 load() 以及 execute() 以便您的类可以从命令行以通常的方式执行。通过构建一个只需要自己的基于反射的 Package 器来使问题过于复杂是没有意义的 public static void main(String args[]) 不管怎样。

idv4meu8

idv4meu82#

如何从终端执行这个示例->load()->execute()
你不能。
它可能会在Java9中实现,但目前还没有从命令行运行方法的正式方法。
类在主方法中调用,而不是使用反射
如你所说,使用反射:

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

不过,我建议不要这样做——通常有更好的方法,但会使一切变得过于复杂。

相关问题