为啥我不能内联创建新的 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 类型的数组? [复制]

为啥我不能索引mysql返回的数组? [复制]

为啥我不能将两个数组与“包含”进行比较? [复制]

为啥我不能在 Swift 中将对象数组返回给 UIStackView? [复制]

为啥我不能在没有括号的插值字符串中使用条件运算符? [复制]