是否可以将动态数量的参数传递给Formatter.format()函数?我希望将String数组中的所有字符串传递给format()函数 像这样的东西,
Formatter format;
format.format("FormatString" , "someString" , arrayOfString[0] , arrayOfString[1] , ... , arrayOfString[n] , "anotherString" );
答案 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());