Menu
CoddyTech

Method Generik

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

Meskipun class generik membuat seluruh class bekerja dengan berbagai tipe, terkadang kamu hanya memerlukan satu method generik. Method generik mendeklarasikan parameter tipenya sendiri, terpisah dari generik pada tingkat class.

Parameter tipe muncul sebelum tipe pengembalian 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 ditempatkan di antara modifier dan tipe nilai kembalian. Ini mendeklarasikan T sebagai parameter tipe untuk method ini. Compiler menyimpulkan tipe sebenarnya dari argumen yang kamu berikan.

method generik juga dapat mengembalikan tipe generik:

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

Generic method sangat berguna dalam utility class saat kamu membutuhkan operasi yang fleksibel dan dapat digunakan kembali tanpa membuat generic class.

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 mendapatkan 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 bagaimana setiap method mendeklarasikan parameter tipenya sendiri dengan <T> atau <K, V> sebelum tipe pengembalian. Compiler menyimpulkan tipe sebenarnya dari argumen yang kamu berikan: 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