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
在一个单独的过程中执行它,但我想我错过了一些东西。
答案 0 :(得分:37)
你的代码已经差不多了 - 它只是没有传递参数:
String[] args = {};
A.main(args);
main
方法在被视为入口点方面仅“特殊”。它是一种非常普通的方法,可以从其他代码中调用而没有任何问题。当然,如果它以期望的方式编写,它只会被称为入口点(例如,如果它使用System.exit
),那么你可能遇到问题,但从语言的角度来看,这很好。
答案 1 :(得分:6)
是的,您可以拨打A.main()
。
你可以这样做:
String[] args = {};
A.main(args);
如果您不关心参数,那么您可以执行以下操作:
public static void main(String ... args)
并将其命名为:
A.main(); //no args here
答案 2 :(得分:3)
“主”这个名字没有什么神奇之处。你所描绘的应该是什么,所以你的问题必须是别的。通过将“main”的名称更改为某些内容来测试我的声明 否则,我打赌它仍然不起作用。
答案 3 :(得分:2)
实际上,您可以按照刚刚提出的方式调用main
方法,但不能按照您的方式调用main
方法。首先,每个执行过程都从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();
}
}
:
{{1}}
` 迭代部分,如果需要,可以保留。 我希望我能按你想要的方式给你解决方案。 :)
答案 4 :(得分:1)
当然。 String [] args = {}; a。主(参数);
请注意:从纯粹的东西来看,主要方法仍然是程序的切入点。现在,如果您尝试在新的PROCESS中运行main方法,这是一个不同的故事。