Konsep Generic dalam Java digunakan untuk membuat kelas, antarmuka, dan metode yang dapat bekerja dengan tipe data yang berbeda sambil tetap memberikan keamanan tipe (type safety) pada saat kompilasi. Ini memungkinkan programmer untuk menulis kode yang lebih fleksibel dan dapat digunakan kembali tanpa kehilangan keamanan tipe.
Penjelasan Sederhana:
Apa itu Generic?
Generic memungkinkan Anda untuk menentukan sebuah tipe parameter di dalam tanda kurung sudut <>
. Contohnya, sebuah class atau method yang bisa bekerja dengan tipe data apapun, seperti String
, Integer
, atau tipe lainnya, tanpa menulis ulang kode.
Box
yang dirancang untuk menyimpan objek, dengan Generic, Anda bisa membuat class yang fleksibel seperti ini:package com.mhyusuf;
public class Box<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
}
Di sini,
T
adalah parameter tipe yang bisa diganti dengan tipe spesifik saat class dipakai. Misalnya:package com.mhyusuf;
public class BelajarGeneric {
public static void main(String[] args) {
Box<Integer> box = new Box<>();
box.setItem(10);
System.out.println(box.getItem());
Box<String> box2 = new Box<>();
box2.setItem("Hello");
System.out.println(box2.getItem());
}
}
Manfaat Generic:
- Keamanan Tipe (Type Safety): Kesalahan tipe dapat dicegah saat kompilasi, sehingga mengurangi runtime errors.
- Kode yang Dapat Digunakan Kembali (Reusable Code): Anda bisa menggunakan satu definisi class atau method untuk berbagai tipe data tanpa duplikasi.
- Mengurangi Cast yang Tidak Perlu: Tidak perlu melakukan casting eksplisit saat mengambil nilai dari objek yang menggunakan Generic.
Batasan Generic
Generic hanya berlaku pada saat compile-time. Informasi tipe dihapus selama proses compilation oleh Java compiler dalam proses yang disebut Type Erasure.
Anda tidak bisa menggunakan tipe primitif langsung seperti
int
atau char
. Sebagai gantinya, gunakan tipe pembungkus seperti Integer
atau Character
.Box<int> box = new Box<>();
box.setItem(10);
System.out.println(box.getItem());
Box<char> box2 = new Box<>();
box2.setItem('a');
System.out.println(box2.getItem());
Contoh Penggunaan di Method:
Anda juga bisa membuat metode yang bersifat Generic:
package com.mhyusuf;
public class BelajarGeneric {
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}
public static void main(String[] args) {
String[] stringArray = {"A", "B", "C"};
printArray(stringArray);
Integer[] intArray = {1, 2, 3};
printArray(intArray);
}
}
Comments
Post a Comment