Rumah >Java >javaTutorial >Bagaimanakah Java Menyelesaikan Kekaburan dalam Kaedah Terlebih Apabila Meluluskan Hujah Null?
Kaedah Lebih Muatan untuk Argumen Null: Menyelesaikan Kekaburan
Pembebanan kaedah membolehkan kelas mentakrifkan berbilang kaedah dengan nama yang sama tetapi senarai parameter yang berbeza. Walaupun ini memberikan fleksibiliti, kadangkala ia boleh membawa kepada kekaburan apabila berurusan dengan hujah null.
Pertimbangkan kod Java berikut:
public static void doSomething(Object obj) { System.out.println("Object called"); } public static void doSomething(char[] obj) { System.out.println("Array called"); } public static void doSomething(Integer obj) { System.out.println("Integer called"); }
Jika kita memanggil doSomething(null), pengkompil menimbulkan kesilapan kerana kaedah yang tidak jelas. Ini kerana null boleh ditugaskan kepada mana-mana daripada tiga jenis parameter (Objek, char[], Integer).
Menentukan Kekaburan
Untuk memahami kekaburan, kita perlu mengambil kira konsep kekhususan dalam kaedah terlebih beban. Java lebih suka memanggil kaedah terpakai yang paling khusus. Dalam kes ini, ketiga-tiga kaedah berpotensi menerima nol.
Walau bagaimanapun, char[] dan Integer adalah lebih khusus daripada Object kerana ia mewakili julat nilai yang lebih sempit yang boleh diberikan kepada mereka. Oleh itu, jika hanya doSomething(Object) dan doSomething(char[]) sahaja, Java akan memilih yang kedua.
Menyelesaikan Kekaburan
Apabila kedua-duanya doSomething(char []) dan doSomething(Integer) tersedia, kedua-duanya tidak lebih khusus daripada yang lain. Ini mewujudkan kekaburan dan memaksa pengkompil untuk gagal.
Untuk menyelesaikan masalah ini, kita mesti menyatakan secara eksplisit kaedah yang ingin kita panggil dengan menghantar hujah nol kepada jenis yang dikehendaki. Sebagai contoh:
doSomething((char[]) null);
Pertimbangan Praktikal
Dalam amalan, kaedah terlebih muatan dengan hujah nol adalah kurang biasa daripada yang mungkin kelihatan. Lazimnya, kami tidak melepasi null secara eksplisit melainkan kaedah memerlukannya, dan jika kami melepasi null, kami biasanya mempunyai jenis tertentu dalam fikiran.
Dengan mengingati pertimbangan ini, kami boleh memastikan kaedah kami yang terlebih beban kekal tidak jelas dan menghalang ralat pengkompil apabila berurusan dengan hujah null.
Atas ialah kandungan terperinci Bagaimanakah Java Menyelesaikan Kekaburan dalam Kaedah Terlebih Apabila Meluluskan Hujah Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!