Menggunakan metoda generik generic method di program Java
Menggunakan Metoda Generik Di Java
Di setiap rilis Java versi terbaru, selalu diikuti adanya penambahan dan peningkatan pada fitur Java. Penambahan dapat berupa adanya fitur-fitur baru (kelas-kelas atau interfes Java baru) di API Java atau peningkatan pada sintaksis bahasa (language sintax). Dari sisi sintaksis bahasa, peningkatan yang cukup penting atau berarti di Java SE 7 adalah penggunaan tipe-tipe generik (generic types).

1. Deklarasi metoda generik.

Maksud utama fitur generik di Java adalah untuk keamanan tipe (type safety). Interface (Interfes), class (kelas), constructor (konstruktor) dan method (metoda) yang dideklarasikan generik harus menggunakan pamameter tipe (type parameter). Parameter tipe adalah placeholder untuk tipe sesungguhnya. Parameter tipe hanya bekerja untuk tipe acuan (variabel dengan tipe interfes atau kelas Java).

Berikut ini adalah sintaksis deklarasi metoda generik atau generic method di Java.

penentu <T> tipe-nilai-dikembalikan nama-metoda(daftar-parameter) {
   // deklarasi dan pernyataan
}

T di dalam kurung sudut adalah parameter tipe. Parameter tipe di metoda generik bersifat lokal, artinya cakupannya dimulai dari posisi dimana parameter tipe dideklarasikan dan berlanjut sampai akhir blok metoda generik. Sebagai contoh, berikut ini adalah deklarasi metoda generik cetakNilai yang tidak mengembalikan atau menghasilkan nilai (void return value):

public static <T> void printNilai(T nilai) {
   System.out.println("Nilai : " + nilai);
}

Sebuah metoda generik, selain menjadi bagian dari kelas generik (generik class) juga dapat menjadi bagian dari kelas biasa (ordinary class). Deklarasi metoda generik mempunyai bagian parameter tipe (type parameter section) yang diletakkan di dalam tanda kurung sudut (< >) sebelum tipe-nilai-dikembalikan. Setiap bagian parameter tipe dapat berisi satu atau lebih parameter tipe (disebut juga type variable) yang dipisah koma.

Baca artikel Mendefinisikan Kelas Generik Di Program Java

Parameter tipe digunakan sebagai tipe nilai yang dikembalikan oleh metoda generik dan juga sebagai placeholder untuk tipe argumen yang diberikan ke metoda generik. Metoda generik dapat memiliki tipe parameter lain selain parameter tipe dari kelasnya.

Baca artikel:

Secara kaidah penamaan, nama-nama parameter tipe adalah karakter huruf besar tunggal apa saja. Mengabaikan kaidah penamaan untuk parameter tipe hanya akan menyulitkan ketika membedakan dengan nama-nama variabel dan kelas. Nama-nama parameter tipe yang paling umum digunakan adalah E (element), K (key), T (type), N (number), V (value), S, U, V dan sebagainya.

2. Motivasi metoda generik.

Di metoda generik, parameter tipe, misalnya T, dapat digunakan sebagai tipe umum (generic type) untuk parameter metoda. Ketika sebuah kelas mendeklarasikan berulang-ulang metoda dengan nama sama tetapi dengan parameter berbeda (overloading method), metoda-metoda tersebut dapat diwakili oleh satu metoda generik dengan T sebagai tipe parameter yang akan mewakili tipe-tipe parameter dari semua metoda.

Dua contoh program berikut adalah program serupa dimana yang satu menggunakan overloading method dan yang lain menggunakan metoda generik. Berikut ini adalah kode program untuk mencetak nilai-nilai tipe berbeda yang tersimpan di beberapa variabel menggunakan overloading method.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Nama file : PrintNilai.java
// Mencetak berbagai tipe nilai
 
// Deklarasi kelas
public class PrintNilai {
    
   // Metoda main
   public static void main(String[] args) {
 
      // Deklarasi dan pemberian nilai awal ke variabel
      Integer varInt = 8652339;
      Double varDouble = 96342.7656;
      Character varChar = 'H';
      String varString = "Belajar Java.";
 
      System.out.println();
      System.out.println("Nilai-nilai yang dicetak:");
 
      // Memanggil overloading metoda print
      print(varInt);
      print(varDouble);
      print(varChar);
      print(varString);         
   }
 
   // Metoda print untuk mencetak nilai tipe long
   public static void print(Integer nilaiInteger) {
      System.out.println(nilaiInteger);
   }
 
   // Metoda print untuk mencetak nilai tipe double
   public static void print(Double nilaiDouble) {
      System.out.println(nilaiDouble);
   }
 
   // Metoda print untuk mencetak nilai tipe char
   public static void print(Character nilaiChar) {
      System.out.println(nilaiChar);
   }
 
   // Metoda print untuk mencetak nilai tipe String
   public static void print(String nilaiString) {
      System.out.println(nilaiString);
   }
}

Menggunakan metoda generik generic method di Java

Di artikel Konversi Data String Ke Tipe-Tipe Numerik Di Java, Anda diperkenalkan pada numeric wrapper class. Numeric wrapper class digunakan untuk memanipulasi tipe-tipe numerik primitif seperti byte, short, int, long, float dan double sebagai obyek.

Selain numeric wrapper class, tipe data primitif lainnya yang memiliki type wrapper class adalah char dan boolean. Type wrapper class untuk tipe char dan boolean adalah Character dan Boolean. Di Java, Byte, Short, Integer, Long, Float, Double, Character dan Boolean adalah kelas-kelas Java yang terletak di paket java.lang.

Baris nomor 11 – 14 adalah deklarasi variabel dengan tipe Integer, Double, Character dan String. Setiap variabel langsung diberi nilai dalam bentuk literal numerik, karakter dan string. Literal numerik dan karakter dapat diberikan ke variabel yang menggunakan tipe wrapper class karena adanya konversi otomatis yang disebut outoboxing yaitu konversi otomatis oleh kompiler Java dari tipe data primitif ke type wrapper class.

Baris nomor 20 – 23 adalah pernyataan untuk memanggil overloading method print. Di setiap pemanggilan metoda print, kompiler Java akan menentukan secara otomatis metoda mana yang paling spesifik digunakan berdasarkan nama metoda dan parameter yang sesuai dengan tipe argumen yang diberikan.

Sebagai contoh, untuk metoda print(varInt), kompiler Java akan memanggil metoda yang dideklarasikan di baris nomor 27 – 29 karena paling spesifik yaitu argumen yang diberikan, varInt, sesuai dengan tipe parameter metoda yaitu Integer jika dibandingkan dengan tiga deklarasi metoda yang lain.

Baris nomor 28, 33, 38 dan 43 adalah pernyataan untuk menampilkan nilai. Ada perbedaan dalam menampilkan nilai yang tersimpan di variabel tipe primitif dan variabel tipe kelas. Untuk variabel tipe primitif, nilai yang tersimpan langsung ditampilkan, sedangkan untuk variabel tipe kelas, string yang merupakan representasi obyek yang ditampilkan.

Kelas Object berada di puncak teratas dalam hirarkhi turunan kelas di Java. Langsung maupun tidak langsung, semua kelas adalah turunan kelas Object. Kelas turunan akan mewarisi metoda yang dimiliki oleh kelas Object, termasuk metoda spesial toString. Untuk menampilkan nilai yang merupakan representasi obyek sebuah kelas, metode toString bisa disertakan dan bisa juga tidak.

Berikut ini adalah penyederhanaan contoh kode program sebelumnya dengan menggunakan satu metoda generik. Tipe parameter dari overloading method di contoh kode program sebelumnya dapat diwakili oleh tipe parameter umum misalnya T. Contoh program GenericPrintNilai akan mencetak nilai-nilai dari tipe berbeda yang tersimpan di beberapa variabel menggunakan metoda generik.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Nama file : GenericPrintNilai.java
// Mencetak berbagai tipe nilai
 
// Deklarasi kelas
public class GenericPrintNilai {
    
   // Metoda main
   public static void main(String[] args) {
 
      // Deklarasi dan pemberian nilai awal ke variabel
      Integer varInt = 8652339;
      Double varDouble = 96342.7656;
      Character varChar = 'H';
      String varString = "Belajar Java.";
 
      System.out.println();
      System.out.println("Nilai-nilai yang dicetak:");
 
      // Memanggil generic method print
      print(varInt);
      print(varDouble);
      print(varChar);
      print(varString);        
   }
 
   // Generic method untuk mencetak nilai berbegai tipe
   public static <T> void print(T nilai) {
      System.out.println(nilai);
   }
}

Menggunakan metoda generik generic method di Java

Baris 27 -29 adalah deklarasi metoda generik print yang mewakili overloading method print di contoh program sebelumnya (program PrintNilai). T yang terletak di dalam kurung sudut adalah parameter tipe. Parameter tipe hanya bekerja untuk tipe acuan (variabel yang dideklarasikan dengan tipe interfes dan kelas Java) dan tidak bisa untuk tipe-tipe primitif.

Di deklarasi metoda generik print, parameter tipe T juga digunakan sebagai tipe parameter metoda nilai. Karena T hanya bekerja untuk tipe acuan, maka argumen untuk parameter metoda bisa berupa variabel-variabel dengan tipe-tipe kelas termasuk disini kelas Byte, Short, Integer, Long, Float, Double, Character dan Boolean.

Ketika metoda print dengan tipe parameter berdeda dipanggil, program akan menggunakan satu metoda generik print untuk mewakili semua panggilan metoda tersebut. Parameter metoda generik nilai tipe T dapat menerima nilai variabel varInt, varDouble, varChar dan varString yang dideklarasikan dengan tipe kelas Integer, Double, Character dan String.

Karena variabel varInt, varDouble, varChar dan varString yang diberikan ke metoda print sebagai argumen dari parameter metoda generik adalah dari tipe acuan atau tipe kelas-kelas Java, maka nilai yang ditampilkan adalah string yang merupakan representasi obyek dari kelas Integer, Double, Character dan String.

Produk Populer

Murah Taffware OKD180 power supply station 220V 69800mAh
Taffware OKD180 Outdoor Power Station

Banyak jenis output, garansi resmi 1 tahun, kapasitas besar 69800 mAh, 180 watt, dan mudah dibawa.

Rp 1.045.500
(4.8/5)
Murah Fosi Audio DA2120C Power Amplifier
Fosi Audio DA-2120C Power Amplifier

2.1 channel, input bluetooth, USB, optical, coaxial, dan RCA, output ke speaker dan subwoofer pasif.

Rp 2.138.900
(5/5)
Murah Fosi Audio BT30D Pro Power Amplifier
Fosi Audio BT30D Pro Power Amplifier

2.1 channel, input bluetooth dan RCA, output speaker pasif dan aktif, serta subwoofer pasif dan aktif.

Rp 1.246.700
(5/5)
Murah Meiyulin OKD320A Power Station
Meiyulin OKD320A Outdoor Power Station

Banyak jenis output, proteksi keamanan, kapasitas besar 84000 mAh, 300 watt, dan mudah dibawa.

Rp 1.547.500
(5/5)