2011-10-29 89 views
8

你可以通過一個新的數組作爲一種方法,並且仍然有陣列中的數據?Java中的數組作爲參數

例如,我有這樣的方法:foo(String[]),我想這樣稱呼它foo(new String[] s = {"String1", "String2"})。但這不是有效的Java。

回答

18

這是「有效的Java方法」(如,它編譯和你想要做什麼):

foo(new String[] {"String1", "String2"}); 

如果您需要更改此方法的機會,那麼你也可以考慮改變方法採取varargs說法:

public void foo(String... strings) { 
    // ... 
} 

然後你就可以按如下方式使用它,而無需顯式創建一個數組:

foo("String1", "String2"); 

以下是隨後也有效:

foo("String1"); 

foo("String1", "String2", "String3"); 

,甚至更多。

+0

如何獲得vaue呢? –

4

如果你試圖讓一個局部變量s,並保持周圍,不,你不能在方法調用內聲明的變量。您必須聲明它首先調用之外:

String[] s = {"String1", "String2"}; 
foo(s); 

可以通話中初始化s,但我看不出有任何理由這樣做,再加上它看起來非常糟糕:

String[] s; 
foo(s = new String[] {"String1", "String2"}); 
1

如果你想通過只值,不需要變量s了,像這樣做:

foo(new String[] {"String1", "String2"}); 
0

你不能聲明一個變量,但你可以傳遞一個數組:

foo(new String[] { "String1", "String2" }); 

如果您想在稍後引用相同的數組,那麼您需要在調用之前聲明它。

0

你可以做foo(new String [] {「String1」,「String2」})