Kaedah generik mempunyai parameter jenis yang menentukan jenis data yang boleh dikendalikan. Kad bebas mewakili jenis yang tidak diketahui, kad bebas atas menyatakan bahawa jenis itu ialah subkelas bagi jenis tertentu atau sendiri, dan kad bebas bawah menyatakan bahawa jenis itu ialah kelas induk atau sendiri.
Perbezaan antara kaedah generik Java dan kad bebas
Pengenalan
Generik ialah alat berkuasa dalam Java yang membolehkan pembangun mencipta kod boleh guna semula tanpa perlu risau tentang ketidakkonsistenan jenis data. Kaedah generik dan kad bebas ialah dua mekanisme yang meningkatkan lagi keupayaan generik. Artikel ini akan meneroka perbezaan mereka dan menunjukkan cara menggunakannya melalui contoh praktikal.
Kaedah Generik
Kaedah generik ialah kaedah yang mempunyai parameter jenis. Parameter jenis menentukan jenis data yang boleh digunakan oleh kaedah tersebut. Sebagai contoh, kaedah generik berikut boleh beroperasi pada senarai apa-apa jenis:
public static <T> void printList(List<T> list) { for (T item : list) { System.out.print(item + " "); } System.out.println(); }
Kaedah generik boleh dipanggil dengan menentukan parameter jenis apabila menggunakan kaedah:
List<String> names = new ArrayList<>(); names.add("John"); names.add("Mary"); printList(names); // 输出:John Mary
Wildcards
Wildcard ialah sintaks khas yang digunakan untuk mewakili jenis yang tidak diketahui. Ia sering digunakan untuk membuat sempadan atas atau bawah pada generik.
Sebagai contoh, kaedah generik berikut menggunakan kad bebas sempadan atas untuk mendapatkan kelas super semua objek dalam senarai:
public static <T> List<Class<?>> getSuperclasses(List<? extends T> list) { List<Class<?>> superclasses = new ArrayList<>(); for (T item : list) { superclasses.add(item.getClass().getSuperclass()); } return superclasses; }
Kes praktikal
Pertimbangkan kes berikut: Kami mempunyai kelas haiwan yang melaksanakan antara muka Haiwan , dan ingin mempunyai Kaedah untuk mencetak senarai haiwan.
Kaedah Generik
Kami boleh mencipta kaedah generik untuk mencetak sebarang jenis Haiwan:
public static <T extends Animal> void printAnimals(List<T> animals) { for (T animal : animals) { System.out.println(animal.getName()); } }
Wildcards
Kami juga boleh menggunakan wildcard untuk mewakili mana-mana subkelas Haiwan:
rree dalam kedua-dua kes ini , kita boleh menggunakan kaedah tunggal untuk mencetak senarai jenis haiwan yang berbeza. Walau bagaimanapun, kaedah generik menyediakan keselamatan jenis kerana ia memaksa parameter jenis untuk mewarisi antara muka Haiwan, manakala kad bebas tidak memberikan jaminan ini.Atas ialah kandungan terperinci Apakah perbezaan antara kaedah generik Java dan penggunaan kad bebas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!