为啥我不能内联创建新的 Java 数组? [复制]
Posted
技术标签:
【中文标题】为啥我不能内联创建新的 Java 数组? [复制]【英文标题】:Why can't I create a new Java array inline? [duplicate]为什么我不能内联创建新的 Java 数组? [复制] 【发布时间】:2010-12-01 05:25:35 【问题描述】:为什么第一个有效,第二个无效?
1) 好的
String[] foo = "foo";
bar.setArray(foo);
2) 不好
bar.setArray("foo");
有没有一种快速的方法可以在一行上创建一个 String[]?
【问题讨论】:
【参考方案1】:bar.setArray(new String[] "foo" );
我认为这种格式是必需的,因为 Java 不想暗示数组类型。使用数组初始化格式,类型由分配变量的类型显式定义。内联,无法推断数组类型。
【讨论】:
【参考方案2】:正如其他人所说:
bar.setArray(new String[] "foo");
计划允许在 J2SE 5.0 中删除 new String[]
,但我们有可变参数。使用可变参数,您可以稍微更改setArray
的声明以使用...
代替[]
,并放弃new String[]
。
public final class Bar
public void setArray(String... array)
[...]
[...]
bar.setArray("foo");
【讨论】:
【参考方案3】:你应该使用这个:
bar.setArray(new String[] "foo");
【讨论】:
【参考方案4】:不幸的是,Java 最接近内联数组的是new String[]"foo", "bar"
,但是有一个巧妙的技巧可以让您执行类似的操作
array("foo", "bar")
自动推断类型。
我一直致力于开发一个有用的 API,以增强 Java 语言以允许内联数组和集合类型。有关更多详细信息,请访问 Google 项目 Espresso4J 或查看here
【讨论】:
这里只是重申 Kev 评论的链接:***.com/questions/1154008/…(是的,我正要标记你;如果有 6 个标记,你就会被踢出去)。以上是关于为啥我不能内联创建新的 Java 数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能创建一个 NSLayoutConstraint 类型的数组? [复制]