通过终端执行java示例方法

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

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

  1. class Instance{
  2. public void load(){
  3. ...
  4. }
  5. public boolean execute(){
  6. ...
  7. return true;
  8. }
  9. }

通常我们可以在 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中实现,但目前还没有从命令行运行方法的正式方法。
类在主方法中调用,而不是使用反射
如你所说,使用反射:

  1. File pathToClass = new File("C:\\Some Folder\\");
  2. Class<?> loaded = null;
  3. try {
  4. ClassLoader loader = new URLClassLoader(new URL[] {pathToClass.toURL()});
  5. loaded = loader.loadClass("some.package.foo.Instance");
  6. } catch(Exception e) {
  7. //do something
  8. }
  9. Object i = loaded.newInstance();
  10. Method method = loaded.getMethod("execute");
  11. Boolean returnValue = (Boolean) method.invoke(i);

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

展开查看全部

相关问题