Java - 将动态数量的参数传递给Formatter.format()函数

时间:2016-01-18 06:13:55

标签: java syntax variadic-functions

是否可以将动态数量的参数传递给Formatter.format()函数?我希望将String数组中的所有字符串传递给format()函数 像这样的东西,

Formatter format;
format.format("FormatString" , "someString" ,  arrayOfString[0] , arrayOfString[1] , ... , arrayOfString[n] , "anotherString" );

2 个答案:

答案 0 :(得分:1)

动态参数基本上是一种语法糖形式,用于将一组参数传递给函数。在内部,动态参数是一个数组。

public Formatter format(String format, Object ... args)

基本相同
public Formatter format(String format, Object[] args)

除了在前一种情况下,您不必手动构建数组,编译器将为您执行此操作。但是仍然可以传递一个参数数组,就好像该方法是用后一种语法编写的。

因此,您可以构建自己的动态参数数组,其中包含您要传递的所有参数:

String[] arrayOfString;

Object[] arguments = new Object[arrayOfString.length + 2];
int argIndex = 0;
arguments[argIndex++] = "someString";
for (int i = 0; i < arrayOfString.length; i++) {
    arguments[argIndex++] = arrayOfString[i];
}
arguments[argIndex++] = "anotherString";

Formatter formatter = new Formatter();
formatter.format("FormatString", arguments);

答案 1 :(得分:0)

只需使用数组流即可完成此操作:

Formatter formatter = new Formatter();
formatter.format(formatString, Arrays.stream(new Object[][]{array1, array2})
    .flatMap(Arrays::stream).toArray());