Java 将数组和其他内容传递给var args

Java 将数组和其他内容传递给var args,java,Java,我在一个fluent API上调用一个库方法,该API采用字符串的var args。当我调用它时,我总是传递至少三个字符串,然后根据情况传递更多的字符串 可以有一个最终的静态数组或其他东西来捕获始终传递的三个字符串吗?可能是这样的: public class Overloaded { private static final String[] CONST_ARR = {"1", "2", "3"}; public static void main(String[] args) {

我在一个fluent API上调用一个库方法,该API采用字符串的var args。当我调用它时,我总是传递至少三个字符串,然后根据情况传递更多的字符串


可以有一个最终的静态数组或其他东西来捕获始终传递的三个字符串吗?

可能是这样的:

public class Overloaded {

  private static final String[] CONST_ARR = {"1", "2", "3"};

  public static void main(String[] args) {
    Overloaded o = new Overloaded();

    o.withConstantStrings();

    String[] a = {"1", "2"};

    o.withAdditionalStrings(a);
  }

  public void withConstantStrings() {
    libraryVarArgsCode(CONST_ARR);
  }

  public void withAdditionalStrings(String... additional) {
    String[] join = new String[additional.length + CONST_ARR.length];

    System.arraycopy(CONST_ARR, 0, join, 0, CONST_ARR.length);
    System.arraycopy(additional, 0, join, CONST_ARR.length, additional.length);

    libraryVarArgsCode(join);
  }

  public void libraryVarArgsCode(String... args) {
    // librabry code here
  }
}

也许是这样的:

public class Overloaded {

  private static final String[] CONST_ARR = {"1", "2", "3"};

  public static void main(String[] args) {
    Overloaded o = new Overloaded();

    o.withConstantStrings();

    String[] a = {"1", "2"};

    o.withAdditionalStrings(a);
  }

  public void withConstantStrings() {
    libraryVarArgsCode(CONST_ARR);
  }

  public void withAdditionalStrings(String... additional) {
    String[] join = new String[additional.length + CONST_ARR.length];

    System.arraycopy(CONST_ARR, 0, join, 0, CONST_ARR.length);
    System.arraycopy(additional, 0, join, CONST_ARR.length, additional.length);

    libraryVarArgsCode(join);
  }

  public void libraryVarArgsCode(String... args) {
    // librabry code here
  }
}
这里有一个想法:

static final String[] RESERVED = {"A", "B", "C"};

...

libMethod(Stream.concat(Arrays.stream(RESERVED), Stream.of("D")).toArray(String[]::new));
这里有一个想法:

static final String[] RESERVED = {"A", "B", "C"};

...

libMethod(Stream.concat(Arrays.stream(RESERVED), Stream.of("D")).toArray(String[]::new));

是否要将
ArrayList
转换为
String[]
?您使用的API和方法是什么?只需将此方法包装为您自己的方法,它总是将这3个值作为参数传递给其他值。是否要将
ArrayList
转换为
String[]
?您使用的API和方法是什么?只需将此方法包装到您自己的方法中,它总是将这3个值与其他值一起传递,并作为参数接收。