假设我有一个方法m(),它接受一个字符串数组作为参数。是否有一种方法可以在调用时内联声明这个数组?例如:
String[] strs = {"blah", "hey", "yo"};
m(strs);
我可以用一行替换它,避免声明一个我永远不会使用的命名变量吗?
假设我有一个方法m(),它接受一个字符串数组作为参数。是否有一种方法可以在调用时内联声明这个数组?例如:
String[] strs = {"blah", "hey", "yo"};
m(strs);
我可以用一行替换它,避免声明一个我永远不会使用的命名变量吗?
当前回答
正如dramon所说,Java最接近内联数组的是new String[]{"blah", "hey", "yo"},但是有一个巧妙的技巧可以让您做一些像这样的事情
数组("blah", "hey", "yo"),类型自动推断。
我一直在研究一个有用的API,用于扩展Java语言,以支持内联数组和集合类型。欲了解更多详细信息谷歌项目Espresso4J或查看这里
其他回答
另一个选择是使用ArrayUtils。org.apache.commons.lang3中的toArray
ArrayUtils.toArray("elem1","elem2")
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
您可以在某处创建方法
public static <T> T[] toArray(T... ts) {
return ts;
}
然后使用它
m(toArray("blah", "hey", "yo"));
为了更好看。
正如dramon所说,Java最接近内联数组的是new String[]{"blah", "hey", "yo"},但是有一个巧妙的技巧可以让您做一些像这样的事情
数组("blah", "hey", "yo"),类型自动推断。
我一直在研究一个有用的API,用于扩展Java语言,以支持内联数组和集合类型。欲了解更多详细信息谷歌项目Espresso4J或查看这里