Rumah >Java >javaTutorial >Bolehkah Argumen Pembolehubah Java (Varargs) Menerima Array sebagai Argumen?

Bolehkah Argumen Pembolehubah Java (Varargs) Menerima Array sebagai Argumen?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-30 19:36:14261semak imbas

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

Bolehkah Tatasusunan Dilalui sebagai Argumen kepada Kaedah dengan Argumen Boleh Ubah di Jawa?

Pertimbangkan kaedah berikut:

class A {
  private String extraVar;
  public String myFormat(String format, Object ... args){
    return String.format(format, extraVar, args);
  }
}

Niatnya ialah agar args dihantar secara individu kepada String.format, tetapi kerana myFormat menganggap args sebagai Objek[], ia bercanggah dengan matlamat.

Java's Varargs (Variable Arguments)

Java's syntactic sugar T... sepadan dengan T[]. Menurut Spesifikasi Bahasa Java (JLS 8.4.1), parameter formal akhir mungkin arity berubah-ubah, yang menganggapnya sebagai tatasusunan jenis yang ditentukan. Oleh itu, kaedah pembolehubah arity menerima bilangan pembolehubah argumen. Seruan bagi kaedah sedemikian boleh mengandungi lebih banyak argumen sebenar daripada parameter formal.

Penyelesaian

Untuk mencapai gelagat yang diingini, tatasusunan boleh dihantar kepada kaedah dengan argumen boleh ubah. Prinsip asasnya ialah setiap Objek dalam tatasusunan dihantar sebagai hujah individu.

Berikut ialah contoh tunjuk cara:

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 ]"
}

Perhatikan bahawa String... ialah bersamaan dengan String[].

Varargs Gotchas

  • Meluluskan Null: Menggunakan kaedah varargs dengan hanya nilai null akan menghasilkan NullPointerException. Untuk menghantar nilai null tunggal, gunakan Object[] { null } atau (Object) null baharu.
  • Menambah Argumen Tambahan: Untuk menambah argumen tambahan apabila menghantar tatasusunan menggunakan varargs, cipta tatasusunan baharu untuk menampung elemen tambahan.
  • Melalui Tatasusunan Primitif: Varargs hanya menyokong jenis rujukan. Untuk menghantar nilai primitif, tukarkannya kepada tatasusunan kelas pembalut yang sepadan.

Atas ialah kandungan terperinci Bolehkah Argumen Pembolehubah Java (Varargs) Menerima Array sebagai Argumen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn