Generik adalah cara untuk membuat kelas dan metode yang aman untuk tipe yang dapat beroperasi pada tipe objek berbeda untuk menangkap kesalahan tipe pada waktu kompilasi, bukan pada waktu proses.
Itu diperkenalkan di versi 5.2
public class GenericClass{item T akhir pribadi; public GenericClass(T item) {ini.item = item; } publik T getItem() {kembalikan barang; } }
statis pribadivoid printItem(T item) {System.out.println(item.toString()); }
Ini digunakan untuk membatasi atau mengikat tipe atau subtipe tertentu.
Ini akan memungkinkan kita untuk memanggil metode kelas atau antarmuka yang dibatasi.
private staticdouble add(T numOne, T numTwo) {return numOne.doubleValue() + numTwo.doubleValue(); }
Ini adalah fitur yang memungkinkan kompiler secara otomatis menentukan jenis metode generik atau parameter konstruktor.
Daftardaftar = Daftar Array baru<>();
Ini adalah simbol >
yang digunakan untuk mewakili argumen tipe yang tidak diketahui.
private static void printItemsInList(Daftar> daftar) {untuk (Item objek : daftar) {System.out.println(item); } }
Ini digunakan untuk menentukan bahwa argumen tipe harus berupa subtipe dari kelas atau antarmuka tertentu.
Ini digunakan untuk mengakses item.
private static void printItemsInList(Daftar extends Number> daftar) {for (Nomor nomor : daftar) {System.out.println(number); } }
Ini digunakan untuk menentukan bahwa argumen tipe harus berupa supertipe dari kelas atau antarmuka tertentu.
Ini digunakan untuk memodifikasi item.
Daftar Nomor super> angka = Daftar Array baru<>();numbers.add(10);numbers.add(10.2);numbers.add(10.4f);System.out.println(numbers);
Ketik keamanan
tipe data diperbaiki pada waktu kompilasi daripada waktu proses yang membuat kode lebih kuat dan andal.
Kegunaan kembali kode
tulis kelas dan metode yang dapat bekerja dengan berbagai jenis data yang dapat membantu mengurangi jumlah kode yang perlu Anda tulis.
Pertunjukan
meningkatkan kinerja dengan mengurangi kebutuhan akan tipe cast dan menghindari overhead pemeriksaan tipe runtime.
Ketik penghapusan
ini adalah fitur utama yang menghapus kode generik saat runtime yang dapat membatasi kegunaan obat generik dalam situasi tertentu.
Dukungan terbatas untuk tipe primitif
Generik di Java tidak mendukung tipe primitif, seperti int atau double, secara langsung. Sebagai gantinya, Anda harus menggunakan kelas pembungkusnya yang sesuai, seperti Integer atau Double. Ini mungkin kurang efisien dibandingkan bekerja dengan tipe primitif secara langsung.
Kompleksitas
dapat menambahkan kompleksitas pada kode yang menggunakan hierarki tipe kompleks dan tipe wildcard.