任何方式来声明一个数组内联?

假设我有一个将string数组作为参数的方法m()。 有没有一种方法可以在我打电话时直接声明这个数组? 即而不是:

String[] strs = {"blah", "hey", "yo"}; m(strs); 

我可以用一行代替它,并避免声明一个我永远不会使用的命名variables?

 m(new String[]{"blah", "hey", "yo"}); 

守护进程是正确的。 你也可以声明m作为可变参数

 void m(String... strs) { // strs is seen as a normal String[] inside the method } m("blah", "hey", "yo"); // no [] or {} needed; each string is a separate arg here 

另一种方式来做到这一点,如果你想要一个列表内联的结果,你可以这样做:

 Arrays.asList(new String[] { "String1", "string2" }); 

我想补充一点,数组初始化语法非常简洁和灵活。 我使用它很多从我的代码中提取数据,并将其放置在更有用的地方。

举个例子,我经常创build这样的菜单:

 Menu menu=initMenus(menuHandler, new String[]{"File", "+Save", "+Load", "Edit", "+Copy", ...}); 

这将允许我写代码来设置菜单系统。 “+”足以告诉它将该项目放在前一项目下。

我可以将它绑定到menuHandler类,方法命名约定通过命名我的方法,像“menuFile,menuFileSave,menuFileLoad,…”,并reflection性地绑定它们(还有其他的select)。

这个语法允许令人惊讶的简短的菜单定义和一个非常可重用的“initMenus”方法。 (但是我不打算重复使用它,因为写起来总是很有趣,只需要几分钟+几行代码)。

任何时候你在你的代码中看到一个模式,看看你是否可以用这样的东西代替它,总是记住数组初始化语法是多么的简洁!

你可以在某处创build一个方法

 public static <T> T[] toArray(T... ts) { return ts; } 

然后使用它

 m(toArray("blah", "hey", "yo")); 

为了更好看。

正如Draemon所说,Java与内联数组最接近的地方是new String[]{"blah", "hey", "yo"}但是有一个巧妙的方法可以让你做类似

array("blah", "hey", "yo")与自动推断的types。

我一直在研究一个有用的API来增强Java语言,以允许内联数组和集合types。 欲了解更多详情谷歌项目Espresso4J或检查出来