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
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!