任何方式来声明一个数组内联?
假设我有一个将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或检查出来