2013-07-30 41 views
10

我有以下代碼Java中,最有效的方式來傳遞字符串數組作爲方法的參數

String[] args = {"a", "b", "c"}; 
method(args); 


private void method(String[] args){ 
    return args; 
} 

爲什麼我不能做沒有錯誤以下?

method({"a", "b", "c"}); 

此代碼僅僅是爲了證明這一點,而不是我正在使用的實際方法。我想做第二種方法,而不是清理我的代碼,並避免聲明十幾個不同的數組,當我只使用它們一次傳遞給我的方法。

問題的核心是什麼是傳遞字符串數組作爲方法參數的最有效方法。

+1

[爲什麼將{a,b,c}傳遞給某個方法無法正常工作?](http://stackoverflow.com/questions/1017486/why-passing-abc-to-a-method-不工作)另請參閱[Java:數組初始化語法](http://stackoverflow.com/questions/5387643/java-array-initialization-syntax),特別是[爲什麼數組常量只能用於初始化?](http ://stackoverflow.com/q/10520617/139010) –

+0

編輯的問題,並重新定義了答案的目標是更有針對性地提供有關將數組作爲參數傳遞的最有效方法,但前提是鏈接不討論可變參數,因此不應再考慮問題重複。 –

+0

順便提一句,你編輯的問題_still_沒有提及可變參數。 –

回答

6

我懷疑你想使用可變參數。你甚至不需要創建一個數組來發送可變長度參數。

String[] strings = method("a", "b", "c"); 

private String[] method(String... args){ 
    return args; 
} 

String[] strings = array("a", "b", "c"); 

private <T> T[] array(T... args){ 
    return args; 
} 

,或者如果你想凝結futher

String[] strings = array("a, b, c"); 

private String[] array(String args){ 
    return args.split(", ?"); 
} 
+0

有沒有3「。」因爲我有3個字符串後字符串? –

+1

而且一個可變參數參數是一個方法的最後一個參數嗎?這是好奇心,因爲原來的問題沒有涉及。 –

+1

不,句號的數量與字符串的數量無關。這是可變參數的語法。是的,可變參數參數需要是最後的。 – Kayaman

16

嘗試

method(new String[]{ "a", "b", "c"}); 

這樣系統知道它是一個新字符串數組。

java是不是像php;)

2

你不需要一個命名參考數組。你可以初始化並傳遞一個匿名數組,如下所示:

method (new String[]{"a", "b"}); 
6

如果你使用:

method({ "a", "b", "c"}); 

那麼Java不知道你是否希望有一個數組的StringObject。你可以明確地告訴java的就是這個樣子是什麼類型的數組:

method(new String[] { "a", "b", "c"}); 

這樣,Java可以告訴你的意思的String陣列。

相關問題