为什么方法 'Arrays.asList()' 不接受类型为 {"",""} 的参数,但接受 ("","")?

Vik*_*yap 0 java arrays

我对 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 ("","","")

Xio*_*Jin 5

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)