Groovy - Generik
Generik memungkinkan tipe (kelas dan antarmuka) menjadi parameter saat mendefinisikan kelas, antarmuka, dan metode. Sama seperti parameter formal yang lebih dikenal yang digunakan dalam deklarasi metode, parameter tipe menyediakan cara bagi Anda untuk menggunakan kembali kode yang sama dengan input berbeda. Perbedaannya adalah bahwa input ke parameter formal adalah nilai, sedangkan input untuk parameter tipe adalah tipe.
Generik untuk Koleksi
Kelas koleksi seperti kelas Daftar dapat digeneralisasi sehingga hanya koleksi jenis itu yang diterima dalam aplikasi. Contoh dari ArrayList umum ditampilkan di bawah ini. Apa yang pernyataan berikut lakukan adalah bahwa ia hanya menerima item daftar yang berjenis string -
List<String> list = new ArrayList<String>();
Dalam contoh kode berikut, kami melakukan hal berikut -
- Membuat koleksi Generalized ArrayList yang hanya akan menampung Strings.
- Tambahkan 3 string ke daftar.
- Untuk setiap item dalam daftar, mencetak nilai string.
class Example {
static void main(String[] args) {
// Creating a generic List collection
List<String> list = new ArrayList<String>();
list.add("First String");
list.add("Second String");
list.add("Third String");
for(String str : list) {
println(str);
}
}
}
Output dari program di atas adalah -
First String
Second String
Third String
Kelas Umum
Seluruh kelas juga bisa digeneralisasikan. Hal ini membuat kelas lebih fleksibel dalam menerima tipe apapun dan bekerja sesuai dengan tipe tersebut. Mari kita lihat contoh bagaimana kita bisa melakukannya.
Dalam program berikut, kami melakukan langkah-langkah berikut -
Kami membuat kelas yang disebut ListType. Perhatikan kata kunci <T> ditempatkan di depan definisi kelas. Ini memberi tahu kompilator bahwa kelas ini dapat menerima tipe apa pun. Jadi ketika kita mendeklarasikan objek dari kelas ini, kita bisa menentukan tipe selama deklarasi dan tipe itu akan diganti di placeholder <T>
Kelas generik memiliki metode pengambil dan penyetel sederhana untuk bekerja dengan variabel anggota yang ditentukan di kelas.
Dalam program utama, perhatikan bahwa kita dapat mendeklarasikan objek dari kelas ListType, tetapi dengan tipe yang berbeda. Yang pertama adalah tipe Integer dan yang kedua adalah tipe String.
class Example {
static void main(String[] args) {
// Creating a generic List collection
ListType<String> lststr = new ListType<>();
lststr.set("First String");
println(lststr.get());
ListType<Integer> lstint = new ListType<>();
lstint.set(1);
println(lstint.get());
}
}
public class ListType<T> {
private T localt;
public T get() {
return this.localt;
}
public void set(T plocal) {
this.localt = plocal;
}
}
Output dari program di atas adalah -
First String
1