Skip to content

M04 · Bab 2± 50 menitDraf AI

Bounded Type, Wildcard & Type Erasure

Tujuan belajar

  • Membatasi type parameter dengan bounded type seperti <T extends Comparable<T>>
  • Menjelaskan kenapa List<Integer> bukan List<Number> dan memakai wildcard ?, ? extends, ? super
  • Menerapkan prinsip PECS dan membaca signature Collections.copy serta Collections.addAll
  • Menjelaskan type erasure beserta batasannya (new T(), instanceof List<String>) dan bahaya raw type

Prasyarat: Generic Class & Method

Kuis

5 soal · lulus bila minimal 70% benar

1.Mengapa List<Integer> ints = new ArrayList<>(); List<Number> nums = ints; gagal dikompilasi, padahal Integer adalah turunan Number?
2.Method void addDefaults(List<? extends Number> target) berisi target.add(1);. Apa yang terjadi?
3.Signature Collections.copy adalah <T> void copy(List<? super T> dest, List<? extends T> src). Menurut PECS, mana yang benar?
4.Apa output System.out.println(new ArrayList<String>().getClass() == new ArrayList<Integer>().getClass());?
5.Sebuah service lama memanggil helper void legacyAppend(List list) { list.add(42); } dengan argumen List<String> skus. Build hanya memunculkan Note tentang unchecked or unsafe operations, lalu di production loop for (String sku : skus) melempar ClassCastException. Perbaikan yang paling tepat?

Jawab semua soal dulu (0/5)