本文介绍了如何为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添加参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-18 22:00