我有一些varargs系统函数,其中T是某种实际类型,例如String:

sys(T... args)

我想创建自己的函数,该函数委派给系统函数。我的函数也是varargs函数。我想将我函数的所有参数传递给系统函数,以及一个附加的尾随参数。像这样:
myfunc(T... args) {
    T myobj = new T();
    sys(args, myobj); // <- of course, here error.
}

我该如何更改错误行?
现在,我仅看到一种方法:创建尺寸为[args] + 1的数组并将所有项目复制到新数组中。
但是也许存在一种更简单的方法?

最佳答案



没有更简单的方法。您需要创建一个新数组,并将myobj包括为该数组的最后一个元素。

String[] args2 = Arrays.copyOf(args, args.length + 1);
args2[args2.length-1] = myobj;
sys(args2);

如果您碰巧依赖于Apache Commons Lang,则可以这样做
sys(ArrayUtils.add(args, myobj));

或 Guava
sys(ObjectArrays.concat(args, myobj));

07-25 23:22
查看更多