Rumah > Java > javaTutorial > Bagaimanakah Java Mengendalikan Melebihan Kaedah dengan Argumen Null?

Bagaimanakah Java Mengendalikan Melebihan Kaedah dengan Argumen Null?

Patricia Arquette
Lepaskan: 2024-12-21 16:05:10
asal
690 orang telah melayarinya

How Does Java Handle Method Overloading with Null Arguments?

Memahami Melebihan Kaedah dengan Argumen Null

Kaedah terlebih muatan dengan parameter yang serupa boleh menyebabkan kekaburan apabila menghantar hujah nol. Isu ini timbul apabila berbilang kaedah mempunyai parameter terpakai yang sepadan dengan nilai nol.

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

Apabila cuba memanggil doSomething(null), pengkompil menghadapi samar-samar ralat kaedah. Ini berlaku kerana kedua-dua kaedah Object dan char[] terpakai dan Java tidak dapat menentukan yang mana satu untuk digunakan.

Isu ini berpunca daripada fakta bahawa null boleh ditugaskan kepada pembolehubah mana-mana jenis rujukan, termasuk Object, char [], dan Integer. Memandangkan setiap kaedah ini menerima jenis rujukan yang serasi, Java menghadapi dilema dalam mengenal pasti kaedah terpakai yang paling khusus.

Untuk menyelesaikan kekaburan ini, kaedah terpakai yang paling spesifik dipilih. Dalam kes ini, char[] adalah lebih khusus daripada Object kerana ia adalah subjenis. Oleh itu, jika doSomething(null) digunakan tanpa menyatakan kaedah, versi char[] akan dipilih.

Walau bagaimanapun, apabila kedua-dua versi char[] dan Integer tersedia, keadaan menjadi lebih mencabar. Kedua-dua kaedah adalah sama khusus, dan Java tidak boleh sewenang-wenangnya memilih satu daripada yang lain. Dalam kes sedemikian, pelakon eksplisit diperlukan untuk menentukan kaedah yang diingini.

Contohnya:

doSomething((char[]) null);  // Calls doSomething(char[])
Salin selepas log masuk

Kesimpulannya, kaedah terlebih muatan dengan argumen nol boleh membawa kepada kekaburan apabila wujud berbilang kaedah yang berkenaan . Kaedah paling khusus dipilih berdasarkan jenis parameter, tetapi jika tiada pemenang yang jelas, pelakon yang jelas diperlukan untuk menyelesaikan konflik.

Atas ialah kandungan terperinci Bagaimanakah Java Mengendalikan Melebihan Kaedah dengan Argumen Null?. 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