Invokasi Kaedah Terlebih Beban Berdasarkan Jenis Parameter
Di Java, kaedah polimorfik, dikenali sebagai kaedah terlampau beban, membenarkan takrifan berbilang kaedah dengan nama yang sama tetapi jenis parameter yang berbeza. Pemilihan kaedah, proses menentukan kaedah terlebih beban untuk digunakan, adalah berdasarkan jenis statik parameter yang diisytiharkan, bukan jenis sebenar mereka.
Pertimbangkan kod berikut:
interface Callee { void foo(Object o); void foo(String s); void foo(Integer i); } class CalleeImpl implements Callee { // Method implementations omitted for brevity } Callee callee = new CalleeImpl(); Object i = new Integer(12); Object s = "foobar"; Object o = new Object(); callee.foo(i); callee.foo(s); callee.foo(o);
Ini kod mencetak "foo(Object o)" tiga kali, walaupun jenis parameter sebenar masing-masing adalah Integer, String dan Object. Ini kerana Java menggunakan penaipan statik, bermakna jenis pembolehubah ditentukan pada masa penyusunan dan kekal malar sepanjang pelaksanaan program.
Untuk mengatasi had ini dan menggunakan kaedah berdasarkan jenis parameter sebenar, seseorang boleh pertimbangkan untuk menggunakan refleksi atau generik. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa teknik sedemikian memperkenalkan kerumitan tambahan dan mungkin tidak selalu menjadi penyelesaian yang paling sesuai.
Atas ialah kandungan terperinci Bagaimanakah Penaipan Statik Java Mempengaruhi Invokasi Kaedah Terlebih Beban Berdasarkan Jenis Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!