browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

Tugas PBO : Generics

Posted by on November 23, 2011

Tugas : Generics

  1. Buat contoh class Generics dan buat class test yang menunjukkan ke-generic-annya!

public class Box<T> {

private T k;                                 // T adalah sebuah tipe data

public void add(T k) {

this.k =k;

}

public T get() {

return k;

}

 

public class BoxDemo3 {

public static void main(String args[]) {

Box<Integer> integerBox = new Box<Integer>();

integerBox.add( new Integer(20) );

Integer someInteger = integerBox.get();

System.out.println( someInteger );

}

}

 

  1. Buat contoh method Generics dalam sebuah class dan buat class testnya!

class F<T> {

private T real;

public F(T real) {

this.real = real;

}

public<G> void benda(G geri) {

System.out.println(“real = ” + real.getClass().getName());

System.out.println(“geri = ” + geri.getClass().getName());

}

}

 

public class DiTest {

public static void main(String args[]) {

D<Integer> d = new D(123);

d.benda(new Barang());

}

}

 

  1. Perhatikan kelas berikut ini :

  • Berilah contoh pada class test untuk T dengan type integer dan double!

public class DiTest {

public static void main(String args[]) {

Kotak<Double> do = new Kotak<Double>();

do.setIsine(78.7);

System.out.println(“Double : ” + do.getIsine());

Kotak<Integer> in = new Kotak<Integer>();

in.setIsine(15);

System.out.println(“integer : ” + in.getIsine());

}

}

  • Diketahui struktur inheritance  class dari parent A ke grand child  G dengan urutan C -D -E -F-G
    • Lakukan modifikasi Class Kotak agar pada saat membuat object dari Class Kotak, type T yang diijinkan adalah tipe-tipe dari class E dan child-childnya! (Keyword: Bounded Type, Lower Bound

    Kotak<? extends E> a;

    a = new Kotak<F>();

    a = new Kotak<G>();

    • Lakukan modifikasi Class Kotak agar pada saat membuat object dari Class Kotak, type T yang diijinkan adalah tipe-tipe dari class E dan parent-parentnya!  (Keyword: Bounded Type, Upper Bound)

Kotak<? super E> b;

b = new Kotak<D>();

b = new Kotak<C>();

b = new Kotak<B>();

b = new Kotak<A>();

 

  1. Suatu generic class dapat memiliki lebih dari satu type parameter. Contoh
  • Apakah metod setIsi() di atas valid? (ingat syarat overload)

Tidak valid,  karena terdapat nama method yang sama sehingga akan menyebabkan ambiguity error.

  • Jika method tersebut valid, batasan apa yang harus dilakukan agar pada saat membuat object tetap valid untuk menghindari ambiguity? (ingat syarat overload)

Ada beberapa hal yang dapat dilakukan, yakni :

  1. Method yang mengoverload HARUS merubah argument list
  2. Method yang mengoverload BOLEH merubah return type
  3. Method yang mengoverload BOLEH merubah access modifier
  4. Method yang mengoverload BOLEH melempar checked exception yang lebih luas atau baru sama sekali dari method yang dioverload.
  5. Suatu method dapat dioverload di class tersebut atau di subclassnya.

======================================================