假设我有一个方法m(),它将一个字符串数组作为参数 . 有没有办法在拨打电话时能够在线声明这个数组?即代替:
String[] strs = {"blah", "hey", "yo"}; m(strs);
我可以用一行替换它,并避免声明一个我永远不会使用的命名变量吗?
m(new String[]{"blah", "hey", "yo"});
守护进程是正确的 . 您也可以将 m 声明为varargs:
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
另一种方法,如果你想把结果作为List inline,你可以这样做:
Arrays.asList(new String[] { "String1", "string2" });
您可以在某处创建方法
public static <T> T[] toArray(T... ts) { return ts; }
然后使用它
m(toArray("blah", "hey", "yo"));
为了更好看 .
您可以直接在现代Java中编写数组,而无需使用初始化程序 . 您的示例现在有效 . 通常最好为参数命名 .
String[] array = {"blah", "hey", "yo"};
要么
int[] array = {1, 2, 3};
如果必须内联,则需要声明类型:
functionCall(new String[]{"blah", "hey", "yo"});
或使用varargs(变量参数)
void functionCall(String...stringArray) { // Becomes a String[] containing any number of items or empty } functionCall("blah", "hey", "yo");
希望Java的开发人员将来允许隐式初始化
我想补充一点,数组初始化语法非常简洁灵活 . 我用它很多来从我的代码中提取数据并将它放在更有用的地方 .
作为一个例子,我经常创建这样的菜单:
Menu menu=initMenus(menuHandler, new String[]{"File", "+Save", "+Load", "Edit", "+Copy", ...});
这将允许我编写来代码来设置菜单系统 . “”足以告诉它将该项目置于上一项目下 .
我可以通过方法命名约定将它绑定到menuHandler类,方法是命名我的方法,如“menuFile,menuFileSave,menuFileLoad,...”,并反射绑定它们(还有其他选择) .
此语法允许令人惊讶的简短菜单定义和极其可重用的“initMenus”方法 . (但我不打算重复使用它,因为编写它总是很有趣,而且只需几分钟就能完成几行代码) .
任何时候你在代码中看到一个模式,看看你是否可以用这样的东西替换它,并且永远记住数组初始化语法是多么简洁!
正如Draemon所说,Java最接近内联阵列的是 new String[]{"blah", "hey", "yo"} 但是有一个巧妙的技巧可以让你做类似的事情
new String[]{"blah", "hey", "yo"}
array("blah", "hey", "yo") 自动推断出类型 .
array("blah", "hey", "yo")
我一直在研究一种有用的API,用于扩充Java语言以允许内联数组和集合类型 . 欲了解更多详情谷歌项目Espresso4J或查看here
其他选项是在org.apache.commons.lang3中使用ArrayUtils.toArray
ArrayUtils.toArray("elem1","elem2")
8 回答
守护进程是正确的 . 您也可以将
m
声明为varargs:另一种方法,如果你想把结果作为List inline,你可以这样做:
您可以在某处创建方法
然后使用它
为了更好看 .
您可以直接在现代Java中编写数组,而无需使用初始化程序 . 您的示例现在有效 . 通常最好为参数命名 .
要么
如果必须内联,则需要声明类型:
或使用varargs(变量参数)
希望Java的开发人员将来允许隐式初始化
我想补充一点,数组初始化语法非常简洁灵活 . 我用它很多来从我的代码中提取数据并将它放在更有用的地方 .
作为一个例子,我经常创建这样的菜单:
这将允许我编写来代码来设置菜单系统 . “”足以告诉它将该项目置于上一项目下 .
我可以通过方法命名约定将它绑定到menuHandler类,方法是命名我的方法,如“menuFile,menuFileSave,menuFileLoad,...”,并反射绑定它们(还有其他选择) .
此语法允许令人惊讶的简短菜单定义和极其可重用的“initMenus”方法 . (但我不打算重复使用它,因为编写它总是很有趣,而且只需几分钟就能完成几行代码) .
任何时候你在代码中看到一个模式,看看你是否可以用这样的东西替换它,并且永远记住数组初始化语法是多么简洁!
正如Draemon所说,Java最接近内联阵列的是
new String[]{"blah", "hey", "yo"}
但是有一个巧妙的技巧可以让你做类似的事情array("blah", "hey", "yo")
自动推断出类型 .我一直在研究一种有用的API,用于扩充Java语言以允许内联数组和集合类型 . 欲了解更多详情谷歌项目Espresso4J或查看here
其他选项是在org.apache.commons.lang3中使用ArrayUtils.toArray