簡體   English   中英

是否可以調用從另一個方法傳遞args []的main方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM