我對Java Collections
並不陌生,但我對以下場景感到困惑。爲什麼方法'Arrays.asList()'不接受{「」,「」}類型的參數,但接受(「」,「」)?
在我的項目,我實現了一個這樣的代碼:
List<String> obj_lStr= new ArrayList<String>();
String[] obj_arrStr = {"someString", "noString", "abcString"};
obj_lStr.addAll(Arrays.asList(obj_arrStr));
但在代碼審查我的項目負責人給我的指令來改變這種代碼並執行它,而無需使用String[] obj_arrStr
。
然後,我改變了我的代碼如下:
obj_lStr.addAll(Arrays.asList({ "someString", "noString", "abcString" }));
但我得到了編譯錯誤:
Main.java:13: error: illegal start of expression
x.addAll(Arrays.asList({"someString", "noString", "abcString"}));
^
Main.java:13: error: ')' expected
x.addAll(Arrays.asList({"someString", "noString", "abcString"}));
^
Main.java:13: error: ';' expected
x.addAll(Arrays.asList({"someString", "noString", "abcString"}));
,我改變我的代碼行這樣:
obj_lStr.addAll(Arrays.asList("someString", "noString", "abcString"));
然後編譯錯誤消失了。
問:爲什麼會這樣?爲什麼asList()
方法會產生一個編譯錯誤{"","",""}
,但不是("","","")
?
試着通過閱讀https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList%28T...%29來了解它。 – nnunes10
'{...}'用於數組初始化,'asList(T ...)'需要'var-args',這意味着你實際上不是傳遞一個數組,而是一系列形成數組的對象序列。 – StepTNT