Pelajaran modul (2/2)
Generik di Jawa
Generik (Jenis Generik) diperkenalkan di Java untuk memungkinkan kelas, antarmuka, dan metode beroperasi pada tipe berbeda sebagai parameter. Hal ini memastikan keamanan tipe waktu kompilasi dan menghindari cast eksplisit yang mahal saat runtime.
Kelas Generik
Kelas generik didefinisikan menggunakan tanda kurung sudut <T> di mana T bertindak sebagai pengganti untuk tipe yang akan ditentukan saat kelas dipakai.
public class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}Saat membuat objek Box, kami menentukan tipe sebenarnya:
Box<Integer> integerBox = new Box<>();
integerBox.setContent(123);
int value = integerBox.getContent(); // No cast needed!Metode Generik
Anda dapat menentukan satu metode umum yang dapat menerima parameter tipe berbeda. Parameter tipe ditempatkan sebelum tipe kembalian metode.
public static <E> void printArray(E[] elements) {
for (E element : elements) {
System.out.println(element);
}
}Wildcard dan Tipe Terikat
Kita dapat membatasi tipe yang diterima oleh generik menggunakan kata kunci extends (batas atas) untuk menerima tipe tertentu atau subkelasnya.
public static <T extends Number> void processNumber(T number) {
// Accepts Integer, Double, Float, etc.
System.out.println(number.doubleValue());
}Cobalah sendiri
Selesaikan kelas generik Box dengan mendefinisikan pengambil getValue() yang mengembalikan T dan penyetel setValue(nilai T) yang menetapkan nilai variabel pribadi.
Tunjukkan petunjuk
Tulis metode dengan tanda tangan yang benar menggunakan parameter tipe generik `T`.
Solusi tersedia setelah 3 upaya
Buat metode generik statis printArray yang mengambil array bertipe T[] bernama array dan mencetak setiap elemen menggunakan loop for-each.
Tunjukkan petunjuk
Parameter tipe `<T>` harus ditempatkan tepat setelah `statis` dan sebelum tipe kembalian `void`.
Solusi tersedia setelah 3 upaya
Buat kelas statis StringContainer yang mengimplementasikan antarmuka Kontainer yang diparameterisasi dengan String. Tentukan konstruktor yang menggunakan parameter String dan implementasikan metode getItem().
Tunjukkan petunjuk
Gantikan tipe generik `T` dengan `String` di tanda tangan kelas dan tipe kembalian `getItem()`.
Solusi tersedia setelah 3 upaya