Masalah lebihan:
- Pembebanan kaedah, seperti dalam contoh program CollectionClassifier, boleh membawa kepada gelagat yang tidak dijangka, kerana pemilihan kaedah untuk digunakan berlaku pada masa penyusunan, berdasarkan jenis parameter dan bukan pada masa jalankan.
Lebihan vs Tulis Ganti:
- Semasa terlebih muatan memilih kaedah pada masa penyusunan, mengatasi memilih kaedah yang betul berdasarkan jenis pada masa jalan, yang menjadikan tingkah laku lebih boleh diramal.
Elakkan mengelirukan overhead:
- Pemuatan berlebihan boleh mengelirukan pengaturcara apabila tidak jelas kaedah mana yang akan digunakan untuk set parameter. Ini amat bermasalah dalam API awam.
Cadangan:
- Elakkan mengeksport dua lebihan beban dengan bilangan parameter yang sama.
- Namakan kaedah secara berbeza dan bukannya lebih muatan (seperti writeInt dan writeBoolean).
- Apabila menggunakan varargs, elakkan beban berlebihan.
Kes generik dan autoboxing:
- Pengenalan generik dan autoboxing dalam Java telah membawa kepada masalah lebihan muatan, seperti yang ditunjukkan dalam contoh List.remove, yang boleh berkelakuan mengelirukan disebabkan kehadiran berbilang beban.
Antara muka dan lambda berfungsi:
- Penambahan lambda dalam Java 8 meningkatkan risiko kekeliruan dengan membebankan kaedah yang mengambil antara muka berfungsi, terutamanya apabila antara muka tersebut tidak "berbeza secara radikal".
Penyelesaian praktikal:
- Ujian eksplisit dengan instanceof boleh mengelakkan masalah yang berkaitan dengan lebihan muatan.
- Lebihan dengan parameter yang sangat berbeza (jenis yang tidak boleh ditukar kepada satu sama lain) elakkan kekeliruan.
- Pembina dan lebihan muatan: Walaupun pembina sentiasa terlebih muatan, menggunakan kilang statik boleh mengelakkan beberapa kerumitan ini.
Pengecualian yang wajar:
- Dalam sesetengah kes, seperti menyesuaikan kelas lama, lebihan muatan mungkin diperlukan, tetapi ia mesti digunakan dengan berhati-hati, memastikan kaedah terlebih beban berkelakuan sama apabila digunakan dengan parameter yang sama.
Kesimpulan:
- Lebihan harus digunakan dengan berhati-hati. Walaupun secara teknikalnya mungkin, selalunya lebih baik untuk menamakan kaedah secara berbeza atau mengelakkan beban berlebihan yang mengelirukan untuk memastikan kod yang lebih jelas dan boleh diramal.
Contoh daripada buku:
Atas ialah kandungan terperinci Item Gunakan lebihan beban dengan bijak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!