我对 Java 并不陌生Collections,但我对以下场景感到困惑。
在我的项目中,我实现了这样的代码:
List<String> obj_lStr= new ArrayList<String>();
String[] obj_arrStr = {"someString", "noString", "abcString"};
obj_lStr.addAll(Arrays.asList(obj_arrStr));
Run Code Online (Sandbox Code Playgroud)
但在代码审查期间,我的项目负责人指示我更改此代码并在不使用的情况下实现它String[] obj_arrStr.
然后我将代码更改为:
obj_lStr.addAll(Arrays.asList( { "someString", "noString", "abcString" }));
Run Code Online (Sandbox Code Playgroud)
但我遇到编译错误:
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"}));
Run Code Online (Sandbox Code Playgroud)
我将代码行更改为:
obj_lStr.addAll(Arrays.asList("someString", "noString", "abcString"));
Run Code Online (Sandbox Code Playgroud)
然后编译错误就消失了。
问:为什么会这样呢?为什么asList()方法会引发编译错误 with {"","",""},而不是 for ("","","")?
Arrays.asList接受一个数组或数组的所有元素作为参数。
所以你需要
Arrays.asList(new String[]{"someString", "noString", "abcString"})
Run Code Online (Sandbox Code Playgroud)
或者
Arrays.asList("someString", "noString", "abcString")
Run Code Online (Sandbox Code Playgroud)