为什么我不能内联创建新的Java数组?

Tre*_*red 4 java arrays

为什么第一个工作而第二个工作不起作用?

1)好的

String[] foo = {"foo"};
bar.setArray(foo);
Run Code Online (Sandbox Code Playgroud)

2)坏

bar.setArray({"foo"});
Run Code Online (Sandbox Code Playgroud)

有没有快速的方法在一行上创建一个String []?

iam*_*ael 33

bar.setArray(new String[] { "foo" });
Run Code Online (Sandbox Code Playgroud)

我相信这种格式是必需的,因为Java不想暗示数组类型.使用数组初始化格式,类型由指定的变量的类型显式定义.内联,无法推断数组类型.


Tom*_*ine 6

正如其他人所说:

bar.setArray(new String[] {"foo"});
Run Code Online (Sandbox Code Playgroud)

计划允许摆脱new String[]J2SE 5.0,但我们有varargs.可变参数,你可以稍微改变的声明setArray使用...到位[],并沟new String[] { }.

public final class Bar {
    public void setArray(String... array) {
    [...]
}

[...]
    bar.setArray("foo"); 
Run Code Online (Sandbox Code Playgroud)