我被困于试图传递一个基元数组(在我的情况下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 []的最后一个参数方法的格式(字符串,对象...)并不完全匹配可变参数类型。强制转换为Object []以确认非可变参数调用,或传递可变参数调用的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);
}
注意'String.format'是不是在这里你的方法。它是一个'java.lang.String'的方法。 – 31piy
你是如何构造'String.format'语句的?它是否包含恒定数量的%s参数?如果是这样,它也可以包含恒定数量的参数,而不是数组。 – Eran
如果你知道所需要的int的数量,把它们拼写成:'String.fromat(“%d%d”,ints [0],ints [1])',就像那些'int's将自动复制... –