如何将基元数组作为 varargs 传递?
2022-09-03 14:56:34
我被困在尝试将一个基元数组(在我的情况下是)传递给一个带有varargs的方法。int[]
比方说:
// prints: 1 2
System.out.println(String.format("%s %s", new String[] { "1", "2"}));
// fails with java.util.MissingFormatArgumentException: Format specifier '%s'
System.out.println(String.format("%s %s", new int[] { 1, 2 }));
但请注意,第一行会收到以下警告:
方法格式的最后一个参数的类型 String[](String, Object...) 与 vararg 参数类型不完全匹配。强制转换为 Object[] 以确认非 varargs 调用,或为 varargs 调用传递 Object 类型的单个参数。
还要注意,我不使用构造函数输入数组,但我从封闭方法中获取它,其签名我无法更改,例如:
private String myFormat(int[] ints) {
// whatever format it is, it's just an example, assuming the number of ints
// is greater than the number of the format specifiers
return String.format("%s %s %s %s", ints);
}