是否可以调用从另一个方法传递args []的main方法?

时间:2010-11-08 09:08:16

标签: java

我试图从另一个传递参数的方法调用类的main方法,比如从命令行运行类时。有没有办法做到这一点?

6 个答案:

答案 0 :(得分:21)

您可以像调用任何其他(静态)方法一样调用main方法:

MyClass.main(new String[] {"arg1", "arg2", "arg3"});

示例:

class MyClass {
    public static void test() {
        MyClass.main(new String[] {"arg1", "arg2", "arg3"});
    }

    public static void main(String args[]) {
        for (String s : args)
            System.out.println(s);
    }
}

答案 1 :(得分:12)

是的,main方法可以像任何其他方法一样调用,所以如果你有一个带有main方法的类,你可以从任何其他类调用它,如:

Test.main(new String[] { "a", "b" });

这样你就可以传递“a”和“b”作为参数。

答案 2 :(得分:5)

你有没有试过像:

// In your method
String[] yourArgs = new String[] {"foo", "baz", "bar"};
YourClassWithMain.main(yourArgs);

但我认为这不是一个好主意,main()方法应该只包含一些调用构造函数的非常基本的代码。你不应该直接调用它,而是创建另一个类的新实例,它将进行所需的所有初始化。

答案 3 :(得分:3)

答案是肯定的,

由于main是一种static方法且公开方法,您可以执行此操作(并根据我的情况编译):

/**
 * @author The Elite Gentleman
 *
 */
public class Test {

    /**
     * 
     */
    public Test() {
        super();
        // TODO Auto-generated constructor stub
        Test.main(new String[] {"main"}); //Yes, it works and compiles....
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Hello");

    }
}

答案 4 :(得分:2)

当然,您可以像这样的普通(静态)方法调用main - 方法:

TheClass.main(new String[] { "lorem", "ipsum" });

作为旁注,你可以像这样声明主方法:

public static void main(String... args) { ... }

并将其称为

TheClass.main("lorem", "ipsum");

生成的字节码是相同的(varargs被编译为数组),因此它以各种方式向后兼容(除非它不能在非vararg感知的java编译器上编译)。

答案 5 :(得分:0)

你可以重命名你的主人并制作一个新主人,让它称为“新”主人。至少这是我在单元测试时通常所做的事情