我有一个方法
public boolean findANDsetText (String Description, String ... extra ) {
在里面我想调用另一个方法并将其传递给extras
,但我想向其他方法添加新元素(描述)。
object_for_text = getObject(find_arguments,extra);
我怎么能在java中这样做?代码会是什么样的?
我厌倦了容纳来自this question的代码,但无法使其正常工作。
答案 0 :(得分:12)
要扩展此处的其他一些答案,可以使用
更快地完成阵列复制String[] newArr = new String[extra.length + 1];
System.arraycopy(extra, 0, newArr, 0, extra.length);
newArr[extra.length] = Description;
答案 1 :(得分:2)
extra
只是一个String
数组。就这样:
List<String> extrasList = Arrays.asList(extra);
extrasList.add(description);
getObject(find_arguments, extrasList.toArray());
您可能需要混淆extrasList.toArray()
的泛型类型。
你可以更快但更冗长:
String[] extraWithDescription = new String[extra.length + 1];
int i = 0;
for(; i < extra.length; ++i) {
extraWithDescription[i] = extra[i];
}
extraWithDescription[i] = description;
getObject(find_arguments, extraWithDescription);
答案 2 :(得分:1)
你的意思是这样吗?
public boolean findANDsetText(String description, String ... extra)
{
String[] newArr = new String[extra.length + 1];
int counter = 0;
for(String s : extra) newArr[counter++] = s;
newArr[counter] = description;
// ...
Foo object_for_text = getObject(find_arguments, newArr);
// ...
}
答案 3 :(得分:1)
使用Arrays.copyOf(...)
:
String[] extra2 = Arrays.copyOf(extra, extra.length+1);
extra2[extra.length] = description;
object_for_text = getObject(find_arguments,extra2);
答案 4 :(得分:0)
就这样......
将Var-args视为如下......
示例:强>
在上面的例子中,第二个参数是“String ... extra”
所以你可以像这样使用:
extra[0] = "Vivek";
extra[1] = "Hello";
或强>
for (int i=0 ; i<extra.length ; i++)
{
extra[i] = value;
}
答案 5 :(得分:0)
对于Java 11,用作新列表的参数:
create("test");
答案 6 :(得分:0)
转换为列表并返回数组,但使用实用程序函数则更短:
// import com.google.common.collect.Lists;
var descriptionAndExtra
= Lists.asList(description, extra).toArray(new String[extra.length + 1]));