繁体   English   中英

在Java中是否可以调用另一个类的main方法并返回到调用代码?

[英]Is it possible in Java to Invoke another class' main method and return to the invoking code?

public class A{
    public static void main(String[] args)
    {
        //Main code
    }
}

public class B{
    void someMethod()
    {
        String[] args={};
        A.main();
        System.out.println("Back to someMethod()");
    }
}


有没有办法做到这一点? 我找到了一种使用反射做同样的方法,但也没有返回到调用代码。 我尝试使用ProcessBuilder在一个单独的进程中执行它,但我想我错过了一些东西。

你的代码已经差不多了 - 它只是没有传入参数:

String[] args = {};
A.main(args);

就被视为切入点而言, main方法只是“特殊的”。 它是一种非常普通的方法,可以从其他代码中调用而没有任何问题。 当然,如果它以一种期望它只被称为入口点的方式编写(例如,如果它使用System.exit ),那么你可能会遇到问题,但从语言的角度来看,这很好。

是的,你可以打电话给A.main()

你可以这样做:

String[] args = {};
A.main(args);

如果您不关心参数,那么您可以执行以下操作:

public static void main(String ... args)

并称之为:

A.main(); //no args here

名字“主”没有什么神奇之处。 你所描绘的应该是什么,所以你的问题必须是别的。 通过将“main”的名称更改为其他内容来测试我的声明,我敢打赌它仍然不起作用。

实际上,你可以像你刚才问的那样调用main方法,而不是你做的方式。 首先,每个执行过程都从main方法开始。 所以,如果你想按照你想要的方式去做,你就可以这样做。 这段代码将执行Hello! World Hello! World八次:

class B
{
  B()
  {
    while(A.i<8)
    {
      String a[]={"Main","Checking"};
      A.main(a);
    }
    System.exit(0);
  }

}

class A
{
  public static int i=0;
  public static void main(String args[])
  {
    System.out.println("Hello! World");
    i++;
    B ob=new B();
  }
}

`迭代部分,你可以保留它。 我希望我能按你想要的方式给你解决方案。 :)

当然。 String [] args = {}; a。主(参数);

请注意:从纯粹的东西来看,主要方法仍然是程序的切入点。 现在,如果您尝试在新的PROCESS中运行main方法,这是一个不同的故事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM