Java Generic

Java Generic

Apa Itu Java Generic

Generic di bahasa pemograman java adalah kemampuan menambahkan type parameter saat membuat kelas atau membuat method. Generic diperkenalkan pada Java SE 5.

Dengan membuat kelas atau method menjadi generic kita dapat menetapkan jenis tipedata apapun selagi itu adalah tipedata object..

<T> Sintak dasar membuat generic

Untuk membuat generic gunakan kurung siku buka < dan kurung siku tutup >. Didalam kurung siku buka dan tutup merupakan type parameter yang sifatnya generic

Konvensi Penamaan Type Parameter Generic

Untuk konvensi pemanamaan type parameter bersifat tidak baku yang artinya bebas ingin mengunakan penamaan variable

Penamaan Type Parameter yang umum sering digunakan adalah:

  • E (Element)
  • K (Key)
  • N (Number)
  • T (Type)
  • V (Value)
  • S,U,V dan lain-lain untuk type parameter selanjutnya

Generic Class

Ketika kita membuat kelas dan menetapkan kelas tersebut menjadi type parameter generic maka kelas itu disebut Generic kelas.

public class Box<T> { private T size; public Box(T size) { this.size = size; } public T getSize() { return size; } }

Sintak diatas merupakan generic class dimana T dapat digunakan dimana saja dan dapat berupa jenis tipedata apapun.. Generic class dapat memiliki beberapa type parameter seperti <T,U,S,Z>

/*instance generic class*/ Box<Integer> box = new Box<>(40);

Untuk membuat object dari generic class gunakan keyword new seperti biasanya namun tambahkan <Integer>.

Generic Method

Ketika kita membuat method dan menetapkan method tersebut sebagai type paramater generic maka method itu disebut Generic Method.

public class Box { public static <T> int getSize(T[] size) { return size.length; } }

Contoh sintak diatas merupakan cara membuat generic method. Type parameter generic T hanya dapat digunakan didalam method saja dan dapat berupa jenis tipedata apapun.

Cara memanggil generic method

Integer[] boxSize = {40,20,88,10}; Integer result = Box.getSize(boxSize); /* atau bisa juga seperti Box.<Integer>getSize(boxSize) */