我想從另一個方法調用類的主要方法,像從命令行運行類一樣傳遞參數。有沒有辦法做到這一點?是否有可能調用其他方法傳遞args []的main方法?
回答
你可以重新命名你的main並創建一個新的,使其成爲「新」主。至少這是我一般做時,單元測試
單元測試不應該要求你改變你的方法,這是一個非常糟糕的做事方式 – 2010-11-08 09:13:53
我沒有說清楚,但我幾乎從來沒有一個主要的東西解析參數並將它們傳遞給別的東西,因爲笨重的主力只是一個壞主意。此外,更改測試代碼並不是一個好主意,但是您應該首先編寫可測試的代碼 – juhanic 2010-11-09 06:54:55
是的,主要方法可以被稱爲像任何其他方法,所以如果你有一個main方法的類測試,您可以從任何其他類一樣調用它:
Test.main(new String[] { "a", "b" });
這樣你就可以傳遞「a」和「b」作爲參數。
謝謝,它正在工作 – abcdefg 2010-11-08 09:17:19
你有沒有嘗試過這樣的:
// In your method
String[] yourArgs = new String[] {"foo", "baz", "bar"};
YourClassWithMain.main(yourArgs);
但我認爲這不是一個好主意,在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
是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
- 方法,就像這樣一個普通的(靜態)方法:
TheClass.main(new String[] { "lorem", "ipsum" });
作爲一個側面說明,你可以聲明的主要方法是這樣的:
public static void main(String... args) { ... }
,並調用它像
TheClass.main("lorem", "ipsum");
生成的字節碼是相同的(可變長度被編譯爲數組),所以它在所有方面都是向後兼容的(除非它不能在非可讀的java編譯器上編譯)。
- 1. JavaFX不調用main(String [] args)方法
- 2. 是否可以從已有主方法的類調用main方法?
- 3. 是否有可能創建一個方法來傳遞一個方法作爲參數並在其中調用?
- 4. 從main方法調用void方法,無法在void方法中傳遞參數
- 5. 是否有可能調用其他方法/指令在運行代碼後的main()
- 6. 是否有可能性之前調用其他方法/指令的main()運行代碼時
- 7. 另一種方法不能調用,而其他方法調用
- 8. Java:調用方法main中的方法
- 9. CGPDFContext是否有其他替代方法?
- 10. 如何處理將參數傳遞給調用其他方法的方法?
- 11. 是否有其他慣用的方法來傳遞狀態信息?
- 12. 當main方法調用方法時,方法是否執行從上到下?
- 13. 方法1是否可以將kwargs傳遞給方法2?
- 14. 將ResultSet傳遞給其他方法
- 15. 將其他參數傳遞給方法
- 16. 將變量傳遞到其他方法
- 17. 從其他方法傳遞值
- 18. 調用方法main方法在Java中
- 19. JUnit測試用例可能包含調用其他方法的方法
- 20. 調用其他方法的TDD方法的正確方法
- 21. 泛型方法 - 傳遞對象並調用其方法
- 22. 如何從其他方法調用返回是其他方法的輸入?
- 23. 顯示從方法的所有調用其他方法
- 24. 從Main方法傳遞參數
- 25. 從其他對象調用方法的方法調用
- 26. 從Main()調用方法
- 27. 在JButton調用main方法
- 28. 如何調用方法在其他類其他類並將它傳遞給主
- 29. 是否有將傳遞地址傳遞給Google Checkout的方法?
- 30. 嘗試調用main方法中的變量在其他方法中初始化的方法
當你嘗試時發生了什麼? – EJP 2010-11-08 09:25:18
@EJP - 不能同意你的看法。這個問題可能已經微不足道了(可能比發佈問題更快)。 – 2010-11-08 13:50:26
比發佈這個問題快得多,並且大小順序比等待答案更快......這可能永遠不會到達。 – EJP 2010-11-09 09:23:43