Rumah  >  Artikel  >  Java  >  Apakah keistimewaan menggunakan generik dalam mekanisme kelebihan beban fungsi Java?

Apakah keistimewaan menggunakan generik dalam mekanisme kelebihan beban fungsi Java?

WBOY
WBOYasal
2024-04-25 21:03:02981semak imbas

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.

Java 函数重载机制中泛型的使用有什么特殊性?

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 cetak menjadi: 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);
    }
}

此类包含两个 addrrreee

Ini menyebabkan pemuatan kaedah jenis primitif yang sama menjadi tidak dapat dilaksanakan.
  • Penyelesaian
Satu penyelesaian ialah menggunakan jenis kad bebas, contohnya:

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 kaedah tambah: 🎜🎜🎜Kaedah generik yang menerima senarai dan elemen generik. 🎜🎜Kaedah bukan generik yang digunakan khusus untuk beroperasi pada senarai rentetan. 🎜🎜🎜Disebabkan penggunaan jenis kad bebas, kaedah ini boleh dilebihkan dan disusun serta dilaksanakan dengan betul. 🎜

Atas 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!

Kenyataan:
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