假设我有一个方法m(),它将一个字符串数组作为参数.有没有办法在拨打电话时能够在线声明这个数组?即代替:
String[] strs = {"blah", "hey", "yo"};
m(strs);
Run Code Online (Sandbox Code Playgroud)
我可以用一行替换它,并避免声明一个我永远不会使用的命名变量吗?
Dra*_*mon 902
m(new String[]{"blah", "hey", "yo"});
Run Code Online (Sandbox Code Playgroud)
Mic*_*ers 109
守护进程是正确的.您也可以声明m为varargs:
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
Run Code Online (Sandbox Code Playgroud)
Ant*_*los 30
另一种方法是,如果你想把结果作为List inline,你可以这样做:
Arrays.asList(new String[] { "String1", "string2" });
Run Code Online (Sandbox Code Playgroud)
Gib*_*olt 17
您可以直接在现代Java中编写数组,而无需使用初始化程序.您的示例现在有效.通常最好为参数命名.
String[] array = {"blah", "hey", "yo"};
Run Code Online (Sandbox Code Playgroud)
要么
int[] array = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
如果必须内联,则需要声明类型:
functionCall(new String[]{"blah", "hey", "yo"});
Run Code Online (Sandbox Code Playgroud)
或使用varargs(变量参数)
void functionCall(String...stringArray) {
// Becomes a String[] containing any number of items or empty
}
functionCall("blah", "hey", "yo");
Run Code Online (Sandbox Code Playgroud)
但愿Java的开发人员将能够在隐式初始化未来
您可以在某处创建方法
public static <T> T[] toArray(T... ts) {
return ts;
}
Run Code Online (Sandbox Code Playgroud)
然后使用它
m(toArray("blah", "hey", "yo"));
Run Code Online (Sandbox Code Playgroud)
为了更好看.
其他选项是在 org.apache.commons.lang3 中使用 ArrayUtils.toArray
ArrayUtils.toArray("elem1","elem2")
Run Code Online (Sandbox Code Playgroud)