Lompati ke konten utama
Modul 6 · Pelajaran 2 dari 212/14 dalam kursus~15 min
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.

Java
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:

Java
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.

Java
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.

Java
public static <T extends Number> void processNumber(T number) {
    // Accepts Integer, Double, Float, etc.
    System.out.println(number.doubleValue());
}

Cobalah sendiri

Latihan#java.m6.l2.e1
Upaya: 0Memuat…

Selesaikan kelas generik Box dengan mendefinisikan pengambil getValue() yang mengembalikan T dan penyetel setValue(nilai T) yang menetapkan nilai variabel pribadi.

Memuat editor…
Tunjukkan petunjuk

Tulis metode dengan tanda tangan yang benar menggunakan parameter tipe generik `T`.

Solusi tersedia setelah 3 upaya

Latihan#java.m6.l2.e2
Upaya: 0Memuat…

Buat metode generik statis printArray yang mengambil array bertipe T[] bernama array dan mencetak setiap elemen menggunakan loop for-each.

Memuat editor…
Tunjukkan petunjuk

Parameter tipe `<T>` harus ditempatkan tepat setelah `statis` dan sebelum tipe kembalian `void`.

Solusi tersedia setelah 3 upaya

Latihan#java.m6.l2.e3
Upaya: 0Memuat…

Buat kelas statis StringContainer yang mengimplementasikan antarmuka Kontainer yang diparameterisasi dengan String. Tentukan konstruktor yang menggunakan parameter String dan implementasikan metode getItem().

Memuat editor…
Tunjukkan petunjuk

Gantikan tipe generik `T` dengan `String` di tanda tangan kelas dan tipe kembalian `getItem()`.

Solusi tersedia setelah 3 upaya