首頁 > Java > java教程 > Java 的變數參數 (Varargs) 可以接受陣列作為參數嗎?

Java 的變數參數 (Varargs) 可以接受陣列作為參數嗎?

Mary-Kate Olsen
發布: 2024-12-30 19:36:14
原創
261 人瀏覽過

Can Java's Variable Arguments (Varargs) Accept Arrays as Arguments?

陣列可以作為參數傳遞給 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陷阱

  • 傳遞Null:呼叫僅包含 null 值的 varargs 方法將導致 NullPointerException。若要傳遞單一 null 值,請使用 new Object[] { null } 或 (Object) null。
  • 新增額外參數: 若要在使用可變參數傳遞陣列時新增額外參數,請建立一個新陣列來容納額外的元素。
  • 傳遞基元數組: 僅支援 Varargs參考類型。若要傳遞基元的值,請將它們轉換為對應包裝類別的陣列。

以上是Java 的變數參數 (Varargs) 可以接受陣列作為參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板