如何使用 varargs 方法中的附加参数调用 varargs 方法

2022-09-03 06:44:19

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

sys(T... args)

我想创建自己的函数,它将委托给系统函数。我的函数也是一个 varargs 函数。我想将我的函数的所有参数传递到系统函数,以及一个附加的尾随参数。像这样:

myfunc(T... args) {
    T myobj = new T();
    sys(args, myobj); // <- of course, here error.
}

我需要如何更改出现错误的行?现在我只看到一种方法:创建维度为[args] + 1的数组,并将所有项目复制到新数组中。但也许有更简单的方法?


答案 1

现在我只看到一种方法:创建维度为[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));

或番石榴

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

答案 2

如果订单不关心,您可以拨打两次电话:sys()

T myobj=new T();
sys(myobj);
sys(args);

如果您无法使用此功能,请切换到集合(例如。LinkedList)用于您的所有功能。