爲什麼這工作:初始化列表<>與Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
但這並不:
List<String> list = Arrays.asList({"a","b","c"});
爲什麼這工作:初始化列表<>與Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
但這並不:
List<String> list = Arrays.asList({"a","b","c"});
這是一個短手只提供構造和分配的陣列時。
String[] array = {"a", "b", "c"};
你可以儘管這樣做:
List<String> list = Arrays.asList("a","b","c");
由於asList
可以採取 「可變參數」 的論點。
您可以嘗試
List<String> list = Arrays.asList(new String[] {"a","b","c"});
你的問題是,爲什麼一個作品和其他沒有,對不對?
那麼,原因是{"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說明。
這第二個對於內聯很有用,所以你可以直接傳遞它來代替數組變量。
由於Arrays
的asList
方法使用可變參數和可變參數表達式映射到陣列中,既可以通過內嵌陣列如:
List<String> list = Arrays.asList(new String[]{"a", "b", "c"});
或者簡單地傳遞變量參數,就可以自動地映射到一個數組:
List<String> list = Arrays.asList("a","b","c");
否,可以做'Arrays.asList( 「A」, 「b」, 「C」);',它是較短的,更類似於OP的原來的問題。 –
托馬斯說什麼仍然有效,不值得讚賞。 – Jeshurun
不,他說的是「你*有*要寫」,這是不真實的,所以,它*確實值得讚賞。 –