陣列可以作為參數傳遞給 Java 中帶有變數參數的方法嗎?
考慮以下方法:
class A { private String extraVar; public String myFormat(String format, Object ... args){ return String.format(format, extraVar, args); } }
目的是將args 單獨傳遞給String.format,但正如myFormat 對待的那樣
Java 的Varargs(變數參數)
Java的語法糖 T... 對應於 T[]。根據Java語言規格(JLS 8.4.1),最終的形式參數可以是變數arity,它將其視為指定類型的陣列。因此,可變數量方法接受可變數量的參數。此類方法的呼叫可以包含比形式參數更多的實際參數。
解
為了實現所需的行為,可以將陣列傳遞給具有可變參數的方法。基本原則是數組中的每個物件都作為單獨的參數傳遞。
這是一個示範範例:
public static String ezFormat(Object... args) { String format = new String(new char[args.length]) .replace("", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
注意String... 是相當於String[].
Varargs陷阱
以上是Java 的變數參數 (Varargs) 可以接受陣列作為參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!