Kelas generik memfasilitasi penggunaan kembali. Jadikan kode Anda dapat diskalakan dan efisien menggunakan kelas generik di Java.

Generik adalah konsep pemrograman yang memungkinkan Anda menentukan jenis yang ingin Anda simpan dalam koleksi. Tipe generik dapat berupa nilai non-primitif apa pun. Parameter tipe tradisional yang mungkin Anda kenal adalah string dan integer.

Namun, Anda dapat membuat tipe generik yang unik. Selanjutnya, Anda dapat membuat kelas generik dan menggunakannya untuk membuat koleksi berbeda menggunakan obat generik.

Membuat Tipe Generik

Tipe generik pada dasarnya adalah objek, dibuat dengan menggunakan kelas atau antarmuka. Jadi, untuk artikel ini, tipe generiknya adalah pelanggan. Menggunakan contoh aplikasi tingkat perusahaan, pelanggan mewakili entitas dalam sistem basis data. Sistem basis data ini melayani perusahaan furnitur yang memiliki tiga lokasi fisik di tiga kota berbeda.

publicabstractclassCustomer{
private String name;
publicCustomer(String name){
this.name = name;
}
public String getName(){
return name;
}
}
instagram viewer

Anda akan melihat abstrak kata kunci di Pelanggan deklarasi kelas di atas. Ini berarti Anda tidak dapat membuat tipe atau objek langsung dari Pelanggan jenis.

Mengingat bahwa setiap lokasi toko fisik akan memiliki daftar pelanggan yang unik, aplikasi harus memiliki tiga subkelas pelanggan yang akan Anda implementasikan menggunakan konsep pemrograman pewarisan.

Ketiga subclass ini akan menjadi tipe solid untuk generik Pelanggan jenis. Pertama Pelanggan subclass akan berisi kode berikut:

publicclassCity1CustomerextendsCustomer{
publicCity1Customer(String name){
super(name);
}
}

Membuat Kelas Generik

Untuk menggunakan tipe generik, Anda harus memiliki kelas atau metode generik yang menerima tipe ini sebagai parameter. Untuk membuat kelas generik, Anda hanya perlu memasukkan parameter tipe ke dalam deklarasi kelas.

publicclassPromotion<T> {}

Kode di atas menunjukkan bahwa Promosi kelas bersifat umum. Ini berarti bahwa Promosi kelas menggunakan tipe untuk membuat objeknya. Sekarang deklarasi kelas dapat mengambil kumpulan objek yang berupa string, integer, pelanggan, dan sebagainya. Namun, perusahaan furnitur hanya menginginkannya Promosi kelas untuk membuat objek menggunakan Pelanggan jenis.

publicclassPromotion<TextendsCustomer> {}

Kode yang diperbarui di atas memastikan bahwa Promosi kelas hanya mengambil Pelanggan jenis, ini berarti semua subclass dari Pelanggan kelas.

Mengingat ada tiga toko, perusahaan ingin membuat satu promosi independen untuk setiap toko. Data yang diperlukan untuk promosi ini serupa. Setiap promosi akan memiliki nama dan kumpulan pelanggan yang menang dalam promosi tersebut.

Ada beberapa cara untuk mendekati masalah ini. Anda bisa membuat Promosi kelas induk dan memiliki tiga subkelas untuk setiap lokasi toko. Tapi sejak masing-masing Promosi memiliki struktur serupa, Anda akhirnya akan menulis kode rangkap, yang tidak efisien (terutama karena Anda sudah bekerja dengannya Pelanggan subkelas).

Oleh karena itu, a Promosi kelas generik adalah salah satu solusi yang lebih efisien untuk masalah ini.

import java.util.ArrayList;

publicclassPromotion<TextendsCustomer> {

private String promoName;
private ArrayList winners = new ArrayList<>();

publicPromotion(String promoName){
this.promoName = promoName;
}

public String getPromoName(){
return promoName;
}

publicvoidaddCustomer(T customer){
if (winners.contains(customer)) {
System.out.println( customer.getName() + " is already a winner of this prize.");
} else {
winners.add(customer);
System.out.println( customer.getName() + " is a winner in the " + this.promoName);
}
}

publicintnumWinners(){
returnthis.winners.size();
}
}

Itu Promosi kelas generik memiliki satu variabel (namapromo). Kelas Java ini menerima kumpulan pelanggan yang memenangkan promosi (pemenang) dan menyimpannya dalam sebuah struktur data ArrayList. Untuk menambahkan pelanggan baru ke koleksi promosi tertentu, Anda perlu menggunakan tambahPelanggan() metode. Jika suatu saat Anda ingin mengetahui jumlah pelanggan yang ada dalam koleksi, Anda dapat memanggilnya numWinners() metode.

Membuat Koleksi Menggunakan Kelas Generik

Sebelum Anda dapat mulai membuat koleksi, Anda harus membuat pelanggan.

publicclassMain{
publicstaticvoidmain(String[] args){
City1Customer john = new City1Customer("John Brown");
City1Customer kelly = new City1Customer("Kelly James");
City2Customer jane = new City2Customer("Jane Doe");
City3Customer jess = new City3Customer("Jess Smith");
}
}

Itu Utama kelas di atas membuat empat objek pelanggan, masing-masing milik salah satu dari tiga lokasi toko. Untuk mulai membuat koleksi, Anda harus terlebih dahulu membuat objek promosi (satu untuk setiap lokasi toko).

Promotion city1promo = new Promotion("City1 Promo");
Promotion city2promo = new Promotion("City2 Promo");
Promotion city3promo = new Promotion("City3 Promo");

Memasukkan tiga baris kode di atas ke dalam Utama kelas akan secara efektif membuat tiga promosi khusus jenis (atau khusus lokasi). Jadi, hanya pelanggan dari toko di lokasi kota pertama (Pelanggan Kota1) dapat menjadi pemenang dalam promosi kota tersebut (city1promo).

city1promo.addCustomer(john);
city1promo.addCustomer(kelly);

Oleh karena itu, tambahkan kode di atas ke file Utama kelas akan menghasilkan hasil berikut di konsol:

Namun, jika Anda mencoba menambahkan pelanggan ketiga ke daftar pemenang promosi di kota pertama, IDE Anda akan menghasilkan kesalahan kompilasi.

Ini karena keduanya Jane juga bukan jess adalah pelanggan toko di kota pertama. Membuat tipe dan kelas generik berguna, karena mencegah kesalahan sederhana ini agar tidak tertangkap dan merusak database sistem. Dalam aplikasi kecil, mudah menemukan kesalahan seperti ini, tetapi dalam sistem tingkat perusahaan, kesalahan seperti ini mungkin tidak terdeteksi.

city2promo.addCustomer(jane);

Mengganti baris kode yang salah dengan yang di atas akan mencetak keluaran berikut ke konsol:

Manfaat Menggunakan Jenis Generik

Dari contoh aplikasi dalam artikel ini, Anda dapat melihat bahwa keuntungan utama menggunakan tipe generik adalah pemeriksaan tipe waktu kompilasi. Tanpa pengecekan tipe, menambahkan Jane ke salah satu dari tiga daftar promosi tidak akan menghasilkan kesalahan waktu eksekusi, karena Jane memang pelanggan perusahaan mebel tersebut.

Generik juga memfasilitasi beberapa keunggulan lain termasuk kode dapat digunakan kembali dan skalabilitas. Saat perusahaan berekspansi ke kota-kota baru, Anda dapat dengan mudah membuat jenis objek promosi baru, sangat bergantung pada kode yang ada. Tipe generik juga memungkinkan Anda membuat kode yang efisien, yang merupakan prioritas utama dalam proses pengembangan perangkat lunak.