本文介绍了如何为varargs添加参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有方法
void m1(Object... objs) {
m2("added", objs);
}
和
void m2(Object... objs) {
for (Object o : objs) {
// do something with Object o
}
}
如果我打电话给 m1(a,b)
,我想要 m2
来查看3个对象的数组(字符串添加,a和b)。但是, m2
只能看到2个对象:Stringadded和一个 Object []
数组,其内部包含字符串a和b。
If I call m1("a", "b")
, I'd like m2
to see an array of 3 Objects (Strings "added", "a" and "b"). However, instead m2
sees just 2 objects: String "added" and an Object[]
array, which internally contains Strings "a" and "b".
我如何才能获得所需的行为,也就是说,我只需将元素添加到varargs,然后再转发给另一种方法?
How can I get the desired behavior, that is, I simply add elements to the varargs before forwarding them to another method?
推荐答案
您可以编写如下方法:
public static Object[] merge(Object o, Object... arr) {
Object[] newArray = new Object[arr.length + 1];
newArray[0] = o;
System.arraycopy(arr, 0, newArray, 1, arr.length);
return newArray;
}
以及随后:
m2(merge("added", objs));
这篇关于如何为varargs添加参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!