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

时间:2013-06-13 19:55:18

标签: java

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在一个单独的过程中执行它,但我想我错过了一些东西。

5 个答案:

答案 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方法,这是一个不同的故事。