[英]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.