如何使用varargs方法中的附加参数调用varargs方法
我有一些varargs系统函数,其中T是一些实际类型,如String
:
sys(T... args)
我想创建自己的函数,它委托给系统函数。 我的function也是一个varargsfunction。 我想通过系统函数传递函数的所有参数,以及一个额外的尾随参数。 像这样的东西:
myfunc(T... args) { T myobj = new T(); sys(args, myobj); // <- of course, here error. }
如何更改错误行? 现在我只看到一种方法:创建维度为[args] + 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));
如果订单不关心,您可以调用sys()
两次:
T myobj=new T(); sys(myobj); sys(args);
如果您不能使用它,请切换到所有function的集合(例如LinkedList)。
如果你可以使用番石榴 ,那么你可以这样做:
sys(ObjectArrays.concat(myobj, args))
Java 8解决方案:
sys(Stream.concat(Arrays.stream(args), Stream.of(myobj)).toArray(T[]::new));
- 是什么导致“java.lang.IllegalStateException:BindingResult和bean name’命令的普通目标对象’都不可用作请求属性”?
- 无法使用Javapns / Javaapns SSL握手失败发送推送通知
- 关于工厂设计模式通过反思
- 如何使用Whitebox模拟私有方法(org.powermock.reflect)
- IDTECH信用卡读卡器数据解密
- 如何使用generics关系实现多态JPA实体
- JPA 2 @SequenceGenerator @GeneratedValue产生唯一约束违规
- Spring Security 3.2,CSRF和多部分请求
- 数独求解器,不是回溯求解器