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

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

Mary-Kate Olsen
Lepaskan: 2024-12-30 19:36:14
asal
243 orang telah melayarinya

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);
  }
}
Salin selepas log masuk

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 ]"
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan