代码之家  ›  专栏  ›  技术社区  ›  Trevor Allred

为什么我不能在内联中创建一个新的Java数组?[复制品]

  •  4
  • Trevor Allred  · 技术社区  · 15 年前

    这个问题已经有了答案:

    为什么第一个有效,第二个无效?

    1)OK

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

    2)坏

    bar.setArray({"foo"});
    

    是否有一种在单行上快速创建字符串[]的方法?

    4 回复  |  直到 13 年前
        1
  •  33
  •   iammichael    15 年前
    bar.setArray(new String[] { "foo" });
    

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

        2
  •  6
  •   Tom Hawtin - tackline    15 年前

    正如其他人所说:

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

    它是计划允许摆脱 new String[] 在J2SE5.0中,但是我们有varargs。使用varargs,可以稍微更改 setArray 使用 ... 代替 [] 然后抛弃 new String[] { } .

    public final class Bar {
        public void setArray(String... array) {
        [...]
    }
    
    [...]
        bar.setArray("foo"); 
    
        3
  •  2
  •   Andrey Adamovich    15 年前

    你应该使用这个:

    bar.setarray(新字符串[]“foo”);

        4
  •  0
  •   Jonathan Weatherhead    13 年前

    不幸的是,Java最接近内联数组 new String[]{"foo", "bar"} 然而,有一个巧妙的技巧可以让你做一些像

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

    我一直在研究一种有用的API,用于扩充Java语言以允许内联数组和集合类型。如需更多详情,请访问Google Project Espresso4j或查看。 here