Java Generics

advertisement
Java Generics
Java Generic
• Generic di Java artinya kode yang dapat
digunakan oleh beberapa objek yang tipenya
berlainan
• Mirip dengan template di C++
Generic Class
• Pendeklarasian Generic Class ditandai dengan simbol yang diawali tanda
(<) dan diakhiri tanda (>), setelah nama Kelas :
class Koleksi<T>
• Dari kode diatas, berarti kita membuat simbol generic dengan simbol T,
sehingga T dianggap tipe data dalam lingkup kelas tersebut. Saat
pendeklarasian objek Koleksi, maka kita harus menentukan tipe T
tersebut :
Koleksi<Integer> a = new Koleksi<Integer>();
• Kode diatas berarti kita mengganti simbol T dengan tipe data integer.
• Tipe data harus diimplementasikan dalam objek, misal int menjadi
Integer, double menjadi Double, string menjadi String.
public class Koleksi<T>
{
private T data;
public T getData()
{ return data; }
public void setData(T data)
{ this.data = data; }
public static void main(String[] args)
{
Koleksi<String> a = new Koleksi<String>();
a.setData("String");
Koleksi<Integer> b = new Koleksi<Integer>();
b.setData(1);
}
}
Generic Method
• Generic Programming dalam sebuah Metode,
hanya berlaku untuk metode tersebut, tidak
berlaku untuk metode yang lain dalam kelas
yang sama.
• Perhatikan bahwa tipe data harus
diimplementasikan dalam objek, misal int
menjadi Integer, double menjadi Double.
public class GenericMethodTest
{
// generic method printArray
public static < E > void printArray( E[] inputArray )
{
for ( E element : inputArray )
System.out.printf( "%s ", element );
System.out.println();
}
public static void main( String args[] )
{
// create arrays of Integer, Double and Character
Integer[] intArray = { 1, 2, 3, 4, 5 };
Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };
Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
printArray( integerArray ); // pass an Integer array
printArray( doubleArray ); // pass a Double array
printArray( characterArray ); // pass a Character array
}
}
Generic dengan Pewarisan
• Digunakan untuk membatasi data yang dapat
dimasukkan dalam generic class/method
• Contoh :
public class Koleksi<T extends Animal>
• Artinya hanya object bertipe Animal dan
turunannya saja yang dapat dimasukkan ke class
generic Koleksi.
• Tipe object turunan Animal contohnya Cat, Bird,
dll
public class Audisi<T extends Musisi>
public class Musisi
{
{
private T data;
public T getData()
{ return data; }
public void setData(T singer)
{ this.data = singer;
}
public void nyanyiEuy()
{
this.data.nyanyi();
}
public void nyanyi()
{ System.out.println("Lalala");
}
}
public class MusisiBerbakat extends Musisi
{
public void dansa()
{ System.out.println("Li li li");
}
}
public static void main(String args[])
{
MusisiBerbakat aku=new MusisiBerbakat();
Audisi<MusisiBerbakat> aud =new Audisi();
aud.setData(aku);
aud.nyanyiEuy();
}
}
Download