为什么我不能内联创建新的Java数组?
为什么第一个工作而第二个工作不起作用?
1)好的
String[] foo = {"foo"}; bar.setArray(foo);
2)坏
bar.setArray({"foo"});
有没有快速的方法在一行上创建一个String []?
bar.setArray(new String[] { "foo" });
我相信这种格式是必需的,因为Java不想暗示数组类型。 使用数组初始化格式,类型由指定的变量的类型显式定义。 内联,无法推断数组类型。
正如其他人所说:
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");
你应该用这个:
bar.setArray(new String [] {“foo”});
不幸的是,Java最接近内联数组的是new String[]{"foo", "bar"}
但是有一个巧妙的技巧可以让你做类似的事情
自动推断出类型的array("foo", "bar")
。
我一直在研究一种有用的API,用于扩充Java语言以允许内联数组和集合类型。 有关详细信息,请参阅Google Project Espresso4J或在此处查看