Rumah > Java > javaTutorial > Bagaimanakah Java Menyelesaikan Kaedah Melebihkan Kekaburan dengan Argumen Null?

Bagaimanakah Java Menyelesaikan Kaedah Melebihkan Kekaburan dengan Argumen Null?

Mary-Kate Olsen
Lepaskan: 2024-12-31 21:33:14
asal
401 orang telah melayarinya

How Does Java Resolve Method Overloading Ambiguity with Null Arguments?

Pembebanan Kaedah dengan Argumen Null: Menyelesaikan Kekaburan

Pemuatan berlebihan kaedah Java membenarkan berbilang kaedah dengan nama yang sama tetapi parameter berbeza. Walau bagaimanapun, apabila memanggil kaedah dengan hujah nol, pengkompil mungkin menghadapi kesamaran jika terdapat berbilang kaedah yang berkenaan.

Dalam coretan kod yang diberikan, kami mempunyai tiga kaedah doSomething dengan parameter Object, char[] dan Integer. Apabila memanggil doSomething(null), ralat kaedah samar-samar timbul. Mari kita mendalami isu ini.

Resolusi Kekaburan

Java mengutamakan versi kaedah terpakai yang paling khusus (JLS §15.12.2). Ketiga-tiga kaedah menerima null sebagai hujah yang sah, menjadikannya sama terpakai.

Object vs. char[]

Object ialah supertype char[], yang bermaksud char[] lebih spesifik daripada Object. Oleh itu, jika hanya kaedah Object dan char[] wujud, kaedah char[] akan dipilih.

Object vs. Integer

Walau bagaimanapun, dengan kedua-dua char [] dan kaedah Integer hadir, kedua-duanya tidak lebih spesifik daripada yang lain. Java tidak dapat menentukan yang mana satu untuk dipanggil, mengakibatkan kekaburan.

Penyelesaian

Untuk menyelesaikan kekaburan, hantar hujah nol secara eksplisit kepada jenis yang dikehendaki:

doSomething((Integer) null);
Salin selepas log masuk

Dalam kes ini, pengkompil akan secara eksplisit memanggil doSomething(Integer obj) kaedah.

Perkaitan Praktikal

Kekaburan dengan hujah nol adalah kurang biasa daripada yang difikirkan. Ia biasanya berlaku apabila secara eksplisit menggunakan kaedah dengan nol atau menggunakan pembolehubah jenis yang tidak ditentukan (seperti Objek).

Sebaliknya, jika anda menghantar pembolehubah kepada kaedah, seperti:

char[] x = null;
doSomething(x);
Salin selepas log masuk

Java akan menentukan kaedah yang dimaksudkan dengan betul berdasarkan jenis pembolehubah, walaupun melepasi nilai nol.

Atas ialah kandungan terperinci Bagaimanakah Java Menyelesaikan Kaedah Melebihkan Kekaburan dengan Argumen Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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