[英]Is it possible to call the main method passing args[] from another method?
我試圖從另一個方法調用類的main方法,如從命令行運行類時傳遞參數。 有沒有辦法做到這一點?
您可以像調用任何其他(靜態)方法一樣調用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);
}
}
是的,main方法可以像任何其他方法一樣調用,因此如果你有一個帶有main方法的類,你可以從任何其他類調用它,如:
Test.main(new String[] { "a", "b" });
這樣你就可以傳遞“a”和“b”作為參數。
你嘗試過類似的東西:
// In your method
String[] yourArgs = new String[] {"foo", "baz", "bar"};
YourClassWithMain.main(yourArgs);
但我認為這不是一個好主意,main()方法應該只包含一些調用構造函數的非常基本的代碼。 您不應該直接調用它,而是創建另一個類的新實例,它將執行所需的所有初始化。
答案是肯定的,
由於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");
}
}
當然,您可以將main
-method稱為普通(靜態)方法,如下所示:
TheClass.main(new String[] { "lorem", "ipsum" });
作為旁注,您可以聲明主方法,如下所示:
public static void main(String... args) { ... }
並稱之為
TheClass.main("lorem", "ipsum");
生成的字節碼是相同的(varargs被編譯為數組),因此它以各種方式向后兼容(除了它不會在非vararg感知的java編譯器上編譯)。
你可以重命名你的主人並制作一個新主人,讓它稱為“新”主。 至少這是我在進行單元測試時通常所做的事情
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.