我被困於試圖傳遞一個基元數組(在我的情況下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將自動複製... –