Menu
CoddyTech

Method Generik

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 55 dari 87.

Meskipun class generik membuat seluruh class dapat bekerja dengan berbagai tipe, terkadang kamu hanya perlu satu method yang bersifat generik. Method generik mendeklarasikan parameter tipenya sendiri, yang terpisah dari generik tingkat class mana pun.

Parameter tipe muncul sebelum tipe kembalian dalam signature method:

public class Utility {
    public static <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.println(element);
        }
    }
}

String[] names = {"Alice", "Bob"};
Integer[] numbers = {1, 2, 3};

Utility.printArray(names);    // Berfungsi dengan String[]
Utility.printArray(numbers);  // Berfungsi dengan Integer[]

Perhatikan <T> yang diletakkan di antara modifier dan tipe pengembalian. Ini mendeklarasikan T sebagai parameter tipe untuk method khusus ini. Compiler menyimpulkan tipe sebenarnya dari argumen yang kamu berikan.

Generic method juga dapat mengembalikan tipe generic:

public static <T> T getFirst(T[] array) {
    if (array.length > 0) {
        return array[0];
    }
    return null;
}

String first = getFirst(new String[]{"a", "b"});  // Mengembalikan "a"

Kamu dapat menggunakan beberapa parameter tipe saat diperlukan:

public static <K, V> void printPair(K key, V value) {
    System.out.println(key + ": " + value);
}

printPair("Age", 25);        // String dan Integer
printPair(1, "First");       // Integer dan String

Method generik sangat berguna dalam class utilitas saat kamu memerlukan operasi yang fleksibel dan dapat digunakan kembali tanpa membuat class generik.

challenge icon

Tantangan

Mudah

Mari buat toolkit utilitas yang menunjukkan fleksibilitas method generik. Kamu akan membuat class dengan method yang dapat digunakan kembali dan bekerja dengan tipe apa pun, untuk menunjukkan bahwa method generik dapat berdiri sendiri tanpa class generik.

Kamu akan mengatur kodemu dalam dua file:

  • ArrayUtils.java: Buat class utilitas yang berisi method generik untuk bekerja dengan array. Class-mu harus memiliki tiga method generik static:

    getLast - Method generik yang menerima array bertipe T dan mengembalikan elemen terakhir. Jika array kosong, kembalikan null.

    swap - Method generik yang menerima array bertipe T dan dua indeks integer, lalu menukar elemen pada posisi tersebut. Method ini tidak mengembalikan apa pun.

    printWithLabel - Method generik dengan dua parameter tipe, K dan V. Method ini menerima label bertipe K dan nilai bertipe V, lalu mencetaknya dalam format: [label]: [value]

  • Main.java: Gunakan method generikmu! Kamu akan menerima empat input: dua kata (string) dan dua angka (integer).

    Pertama, buat array String[] yang berisi kedua kata. Gunakan getLast untuk mengambil elemen terakhir dan cetak: Last word: [result]

    Berikutnya, buat array Integer[] yang berisi kedua angka. Panggil swap untuk menukar elemen pada indeks 0 dan 1, lalu cetak: After swap: [first], [second]

    Terakhir, tunjukkan method generik dengan dua parameter dengan memanggil printWithLabel dua kali:

    • Sekali dengan kata pertama sebagai label dan angka pertama sebagai nilai
    • Sekali dengan angka pertama sebagai label dan kata kedua sebagai nilai

Kamu akan menerima empat input secara berurutan: kata pertama, kata kedua, angka pertama, angka kedua.

Perhatikan bahwa setiap method mendeklarasikan parameter tipenya sendiri dengan <T> atau <K, V> sebelum tipe pengembalian. Compiler menyimpulkan tipe sebenarnya dari argumen yang kamu berikan, jadi kamu tidak perlu menentukannya secara eksplisit saat memanggil method!

Coba sendiri

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca input
        String firstWord = scanner.nextLine();
        String secondWord = scanner.nextLine();
        int firstNumber = scanner.nextInt();
        int secondNumber = scanner.nextInt();
        
        // TODO: Buat array String[] yang berisi kedua kata
        
        // TODO: Gunakan ArrayUtils.getLast untuk mendapatkan elemen terakhir
        // Cetak: "Last word: [result]"
        
        // TODO: Buat array Integer[] yang berisi kedua angka
        
        // TODO: Panggil ArrayUtils.swap untuk menukar elemen pada indeks 0 dan 1
        // Cetak: "After swap: [first], [second]"
        
        // TODO: Panggil ArrayUtils.printWithLabel dengan firstWord sebagai label dan firstNumber sebagai nilai
        
        // TODO: Panggil ArrayUtils.printWithLabel dengan firstNumber sebagai label dan secondWord sebagai nilai
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online