2012-05-23 68 views

回答

54

這是一個短手只提供構造和分配的陣列時。

String[] array = {"a", "b", "c"}; 

你可以儘管這樣做:

List<String> list = Arrays.asList("a","b","c"); 

由於asList可以採取 「可變參數」 的論點。

11

您可以嘗試

List<String> list = Arrays.asList(new String[] {"a","b","c"}); 
+1

否,可以做'Arrays.asList( 「A」, 「b」, 「C」);',它是較短的,更類似於OP的原來的問題。 –

+6

托馬斯說什麼仍然有效,不值得讚賞。 – Jeshurun

+0

不,他說的是「你*有*要寫」,這是不真實的,所以,它*確實值得讚賞。 –

11

你的問題是,爲什麼一個作品和其他沒有,對不對?

那麼,原因是{"a","b","c"}不是一個有效的Java表達式,因此編譯器不能接受它。

你似乎暗示的是,你想傳遞一個數組初始值設定項而不提供full array creation expression(JLS 15.10)。

正確的數組創建表達式,正如其他人指出:

String[] array = {"a", "b", "c"}; 

正如JLS 10.6 Array Initializers陳述或

String[] array = new String[]{"a", "b", "c"}; 

正如JLS 15.10 Array Creation Expressions說明。

這第二個對於內聯很有用,所以你可以直接傳遞它來代替數組變量。

由於ArraysasList方法使用可變參數和可變參數表達式映射到陣列中,既可以通過內嵌陣列如:

List<String> list = Arrays.asList(new String[]{"a", "b", "c"}); 

或者簡單地傳遞變量參數,就可以自動地映射到一個數組:

List<String> list = Arrays.asList("a","b","c");