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

abc*_*efg 19 java

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

Gro*_*uez 21

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

MyClass.main(new String[] {"arg1", "arg2", "arg3"});
Run Code Online (Sandbox Code Playgroud)

例:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


And*_*anu 12

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

Test.main(new String[] { "a", "b" });
Run Code Online (Sandbox Code Playgroud)

这样你就可以传递"a"和"b"作为参数.


Bas*_*sen 5

你尝试过类似的东西:

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

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


juh*_*nic 0

您只需重命名您的主目录并创建一个新主目录,使其称为“新”主目录。至少这是我在单元测试时通常所做的

  • 单元测试不应该要求你改变你的方法,这是一种非常糟糕的做事方式 (4认同)
  • 我没有说清楚,但我几乎从来没有一个主要功能不仅仅是解析参数并将它们传递给其他东西,因为笨重的主要只是一个坏主意。另外,更改测试代码并不是一个好主意,但是您应该首先编写可测试的代码 (2认同)