我试图从另一个传递参数的方法调用类的main方法,比如从命令行运行类时。有没有办法做到这一点?
答案 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)
你可以重命名你的主人并制作一个新主人,让它称为“新”主人。至少这是我在单元测试时通常所做的事情