10

我有一个方法

public boolean findANDsetText  (String Description, String ... extra ) {

在里面我想调用另一个方法并传递它,extras但我想将新元素(描述)添加到附加组件中。

     object_for_text = getObject(find_arguments,extra);

我怎么能在java中做到这一点?代码会是什么样子?

我厌倦了容纳这个问题的代码,但无法让它工作。

4

7 回答 7

13

要扩展此处的其他一些答案,可以使用以下方法更快地完成数组复制

String[] newArr = new String[extra.length + 1];
System.arraycopy(extra, 0, newArr, 0, extra.length);
newArr[extra.length] = Description;
于 2012-07-04T03:01:56.357 回答
5

使用Arrays.copyOf(...)

String[] extra2 = Arrays.copyOf(extra, extra.length+1);
extra2[extra.length] = description;

object_for_text = getObject(find_arguments,extra2);
于 2017-10-04T09:58:08.980 回答
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);
于 2012-07-04T02:51:13.917 回答
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);

    // ...
}
于 2012-07-04T02:52:53.447 回答
0

简直就是这样……

如下对待 Var-args...

例子:

在您上面的示例中,第二个参数是“String ... extra”

所以你可以这样使用:

extra[0] = "Vivek";
extra[1] = "Hello";

或者

for (int i=0 ; i<extra.length ; i++)

  {

          extra[i] = value;

  }
于 2012-07-04T02:58:55.243 回答
0

使用 Java 11 作为新列表的参数:

List<String> templateArguments = new ArrayList<(Arrays.asList(args));
templateArguments.add(throwable.getMessage());
String.format(template, templateArguments.toArray());
于 2019-12-03T19:20:19.290 回答
0

转换为列表并返回数组,但使用实用函数更短:

// import com.google.common.collect.Lists;

var descriptionAndExtra
    = Lists.asList(description, extra).toArray(new String[extra.length + 1]));
于 2020-02-10T15:04:16.103 回答