Rumah > Java > javaTutorial > Bagaimana Java Mengendalikan Kaedah Ambiguous Overloading dengan Null Arguments?

Bagaimana Java Mengendalikan Kaedah Ambiguous Overloading dengan Null Arguments?

Linda Hamilton
Lepaskan: 2025-01-05 08:23:39
asal
723 orang telah melayarinya

How Does Java Handle Ambiguous Method Overloading with Null Arguments?

Metode Overloading dengan Ambiguous Null Arguments

Apabila kaedah overloading melibatkan parameter yang boleh menerima nilai null, Java boleh menghadapi kekaburan dalam memilih kaedah yang sesuai untuk menyeru. Mari kita teliti contoh untuk memahami isu ini.

Pertimbangkan tiga kaedah berikut dengan parameter:

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

Jika kita memanggil doSomething(null), pengkompil akan membuang "kaedah samar-samar" kesilapan. Sebabnya ialah ketiga-tiga kaedah boleh menerima null sebagai nilai yang sah.

Walau bagaimanapun, isu ini timbul secara khusus daripada kehadiran kedua-dua kaedah Integer dan char[]. Memandangkan Object ialah supertype char[], versi tatasusunan adalah lebih khusus daripada versi Object. Oleh itu, dengan kehadiran kaedah Object dan char[] sahaja, versi tatasusunan akan dipilih.

Tetapi apabila versi Integer juga tersedia, kedua-dua versi dan versi tatasusunan menjadi lebih spesifik daripada versi Objek . Dalam kes ini, Java tidak dapat menentukan kaedah yang lebih sesuai untuk mengendalikan null.

Untuk menyelesaikan kekaburan ini, seseorang boleh secara eksplisit menghantar hujah kepada jenis yang dikehendaki. Contohnya:

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

Dalam kes ini, Java akan memilih versi char[] dengan jelas.

Dalam amalan, kekaburan ini kurang biasa daripada yang mungkin kelihatan. Biasanya, kaedah digunakan dengan hujah yang mempunyai jenis tertentu, dan bukannya bergantung pada jenis null atau sangat generik seperti Object. Walau bagaimanapun, adalah penting untuk memahami potensi kekaburan ini apabila menggunakan kaedah lebih muatan dan nilai nol.

Atas ialah kandungan terperinci Bagaimana Java Mengendalikan Kaedah Ambiguous Overloading dengan Null Arguments?. 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