java将variablelengtharguments传递给不同大小的variablelengtharguments
假设我有一个如下的方法:
public void setTask(String... args) {
//...
}
我如何创建一个特殊版本的上述方法,该方法对args
的第一个成员有一个固定值,如下所示
(args[0]
始终具有固定值和constructorArgs.length == args.length-1
。)
public void setSpecialTask(String... constructorArgs) {
setTask("SpecialTask", constructorArgs); // ERROR: 'setTask(java.lang.String...)' cannot be applied to '(java.lang.String, java.lang.String[])'
}
'setTask(java.lang.String...)' cannot be applied to '(java.lang.String, java.lang.String[])'
# 1 楼答案
您可以声明一个新的
setTask(String, String...)
方法,也可以创建一个包含附加字符串的数组:# 2 楼答案
数组具有固定的结构。这意味着一旦实例化,就不能扩展(或减小)它的大小
所以,为了满足您的需求,您必须创建一个具有所需容量的新阵列
作为替代方法(虽然不是最有效的方法(使用小列表也可以),将数组转换为
List
,在中添加缺少的元素并将其转换回数组:或者在Java 8中既简单又高效(不需要任何中介
List
):