我有一些varargs系统函数,其中T是一些实际类型,如String:
sys(T... args)
Run Code Online (Sandbox Code Playgroud)
我想创建自己的函数,它委托给系统函数.我的功能也是一个varargs功能.我想通过系统函数传递函数的所有参数,以及一个额外的尾随参数.像这样的东西:
myfunc(T... args) {
T myobj = new T();
sys(args, myobj); // <- of course, here error.
}
Run Code Online (Sandbox Code Playgroud)
如何更改错误行?现在我只看到一种方法:创建维度[args] + 1的数组,并将所有项目复制到新数组.但也许存在一种更简单的方法?
假设我有方法
void m1(Object... objs) {
m2("added", objs);
}
Run Code Online (Sandbox Code Playgroud)
和
void m2(Object... objs) {
for (Object o : objs) {
// do something with Object o
}
}
Run Code Online (Sandbox Code Playgroud)
如果我打电话m1("a", "b"),我想m2看到3个对象的数组(字符串"添加","a"和"b").但是,m2只看到2个对象:字符串"已添加"和一个Object[]数组,其内部包含字符串"a"和"b".
我怎样才能获得所需的行为,也就是说,我只是在将它们转发给另一种方法之前将元素添加到varargs中?