Rumah  >  Artikel  >  Java  >  Mekanisme pelaksanaan generik di Jawa

Mekanisme pelaksanaan generik di Jawa

WBOY
WBOYasal
2024-04-12 18:09:011035semak imbas

Generik Java menggunakan teknologi pemadaman jenis untuk menghapuskan maklumat jenis pada masa jalan dan mengekalkan maklumat struktur. Ia menggunakan kad bebas untuk mewakili sebarang jenis dan mengehadkan skop jenis melalui generik terikat. Melalui pemadaman jenis, generik meningkatkan kebolehgunaan semula dan fleksibiliti kod, mengurangkan overhed dan potensi ralat.

Java 中泛型的实现机制

Mekanisme pelaksanaan generik dalam Java

Generik ialah ciri berkuasa dalam bahasa pengaturcaraan Java yang membolehkan anda mencipta kelas dan kaedah yang boleh beroperasi pada pelbagai jenis data. Ini meningkatkan kebolehgunaan semula dan fleksibiliti kod.

Jenis pemadaman

Pelaksanaan generik di Jawa bergantung pada teknologi jenis pemadaman. Ini bermakna apabila menyusun kod Java, pengkompil memadam maklumat jenis generik. Hanya maklumat struktur jenis generik dikekalkan, seperti nama dan bilangan parameter jenis.

Pendekatan ini membenarkan akses kepada maklumat jenis generik pada masa jalan tanpa membuat isu overhed atau prestasi tambahan.

Wild Cards

The Wildcard di Java ialah jenis khas jenis generik yang membolehkan anda menentukan ruang letak yang boleh sepadan dengan mana-mana jenis. Watak kad liar diwakili dengan tanda tanya (?).

Sebagai contoh, kaedah berikut akan menerima senarai apa-apa jenis:

public static <T> void printList(List<T> list) {
    for (T element : list) {
        System.out.println(element);
    }
}

List<String> strList = List.of("a", "b", "c");
printList(strList); // 可打印字符串类型列表

Bounded Generics

Bounded Genericsmembolehkan anda mengehadkan skop jenis generik. Anda boleh menentukan jenis sempadan dan semua jenis yang diterima mestilah jenis itu atau subkelas atau antara mukanya.

Sebagai contoh, kaedah berikut akan menerima sebarang jenis yang melaksanakan antara muka Setanding: Comparable 接口的类型:

public static <T extends Comparable<T>> T max(T a, T b) {
    return a.compareTo(b) > 0 ? a : b;
}

Integer maxInt = max(10, 20); // 可在整数类型上使用该方法

实战案例

假设您要创建一个可以存储任何类型数据的哈希表。您可以使用 HashMapb56561a2c0bc639cf0044c0859afb88f 类,其中 K 是密钥类型,V

Map<String, Integer> studentAges = new HashMap<>();
studentAges.put("John", 20);
studentAges.put("Mary", 22);

System.out.println(studentAges.get("John")); // 输出:20

Contoh praktikal

Andaikan anda ingin mencipta jadual cincang yang boleh menyimpan sebarang jenis data. Anda boleh menggunakan kelas HashMapb56561a2c0bc639cf0044c0859afb88f, dengan K ialah jenis kunci dan V ialah jenis nilai: 🎜rrreee🎜Generics dibenarkan Anda boleh mencipta program yang berfungsi dengan pelbagai jenis data dengan mudah. Ia meningkatkan kebolehgunaan semula kod, fleksibiliti dan mengurangkan kemungkinan ralat. 🎜

Atas ialah kandungan terperinci Mekanisme pelaksanaan generik di Jawa. 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