Yur*_*rev 16 java delegates variadic-functions
我有一些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的数组,并将所有项目复制到新数组.但也许存在一种更简单的方法?
现在我只看到一种方法:创建维度[args] + 1的数组并将所有项目复制到新数组.
没有更简单的方法.您需要创建一个新数组并包含myobj作为数组的最后一个元素.
String[] args2 = Arrays.copyOf(args, args.length + 1);
args2[args2.length-1] = myobj;
sys(args2);
Run Code Online (Sandbox Code Playgroud)
如果您碰巧依赖Apache Commons Lang,您可以这样做
sys(ArrayUtils.add(args, myobj));
Run Code Online (Sandbox Code Playgroud)
或番石榴
sys(ObjectArrays.concat(args, myobj));
Run Code Online (Sandbox Code Playgroud)
sys()如果订单不关心,您可以拨打两次电话:
T myobj=new T();
sys(myobj);
sys(args);
Run Code Online (Sandbox Code Playgroud)
如果您不能使用它,请切换到所有功能的集合(例如LinkedList).