Dalam lebihan beban fungsi Java, parameter generik akan dipadamkan, menyebabkan lebihan muatan kaedah generik jenis asal yang sama menjadi tidak sah. Penyelesaiannya ialah menggunakan jenis kad bebas, seperti 8742468051c85b06f0a0af9e3e506b5c dan Objek, untuk membebankan kaedah generik dan bukan generik untuk jenis primitif yang berbeza.
Keistimewaan Generik dalam Java Function Overloading Mechanism
Fungsi lebihan Java merujuk kepada mentakrifkan berbilang kaedah dengan nama yang sama tetapi senarai parameter yang berbeza dalam kelas yang sama.
Apabila parameter jenis generik digunakan dalam tandatangan kaedah, penggunaan parameter jenis generik memperkenalkan beberapa keanehan dalam mekanisme beban lampau fungsi:
Jenis kaedah generik pemadaman
Pada masa penyusunan, parameter Jenis generik akan dipadamkan jenis asal, sebagai contoh:
public class Test { public <T> void print(T value) { System.out.println(value); } }
Dalam kod bait yang disusun, tandatangan kaedah print
方法的签名变成了:
public void print(Object value)
这会导致相同原始类型的泛型方法重载变得不可行。
解决办法
一种解决办法是使用通配符类型,例如:
public <T> void print(T value) { System.out.println(value); } public void print(Object value) { System.out.println(value); }
现在,您可以重载具有不同原始类型的泛型方法和非泛型方法。
实战案例
考虑以下示例类:
public class Test { public <T> void add(List<T> list, T element) { list.add(element); } public void add(List<String> list, String element) { list.add(element); } }
此类包含两个 add
rrreee
rrreee
Kini anda boleh membebankan kaedah generik dan bukan generik dengan jenis primitif yang berbeza. 🎜🎜🎜Contoh Praktikal🎜🎜🎜Pertimbangkan kelas contoh berikut: 🎜rrreee🎜Kelas ini mengandungi dua kaedahAtas ialah kandungan terperinci Apakah keistimewaan menggunakan generik dalam mekanisme kelebihan beban fungsi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!