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

时间:2009-09-24 20:07:08

标签: java arrays

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

1)好的

String[] foo = {"foo"};
bar.setArray(foo);

2)坏了

bar.setArray({"foo"});

有一种快速的方法可以在一行上创建一个String []吗?

4 个答案:

答案 0 :(得分:33)

bar.setArray(new String[] { "foo" });

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

答案 1 :(得分:6)

正如其他人所说:

bar.setArray(new String[] {"foo"});

计划允许在J2SE 5.0中删除new String[],但我们有varargs。使用varargs,您可以稍微更改setArray的声明以使用...代替[],并放弃new String[] { }

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

[...]
    bar.setArray("foo"); 

答案 2 :(得分:2)

你应该用这个:

bar.setArray(new String [] {“foo”});

答案 3 :(得分:0)

不幸的是,Java最接近内联数组的是new String[]{"foo", "bar"}但是有一个巧妙的技巧可以让你做类似的事情

array("foo", "bar")自动推断类型。

我一直在研究一种有用的API,用于扩充Java语言以允许内联数组和集合类型。有关详细信息,请参阅Google项目Espresso4J或查看here