• 0 - use collections in JDK 1.4
  • 1 - collections in Java 5
  • 2 - still allows heterogeneity
  • 3 - collections + auto-(un)boxing
  • 4 - generic iterators of generic collections
  • 5 - enhanced for-loop
  • 6 - subtyping for generics
  • 7 - immutable collections?
  • 8 - type problems with arrays
  • 9 - wildcards
  • 10 - what can you do with an existential type?
  • 11 - need for generic methods
  • 12 - some operations on Collection in JDK 1.4 and in Java 5
  • 13 - bounded polymorphism (upper bound on type variable and wildcard)
    • a
    • b
    • c
  • 14 - possibilities and restrictions on upper bounded wildcards
  • 15 - operations on Collection in Java 5, using wildcards and upper bounds
  • 16 - using wildcards and type variables together
  • 17 - when existential types cannot be avoided
  • 18 - mapping and folding: FP versus OOP
  • 19 - F-bounded polymorphism (Comparable and max)
  • 20 - F-bounded polymorphism and subclassing; wildcards with lower bounds
  • 21 - Comparator; restrictions on the use of bounded and unbounded wildcards
  • 22 - implementing max with fold
  • 23 - wildcard capture
  • 24 - implementing swap/max/sort with generic helpers and wildcard capture
  • 25 - using legacy non-generic code from generic code, raw types
  • 26 - type erasure (Vector)
  • 27 - type erasure (swap/max/sort)
  • 28 - unchecked warning
  • 29 - using generic code in legacy code
  • 30 - lack of run-time type information on type variables (getClass, casting)
  • 31 - limitations on arrays
  • 32 - class literals as runtime-type tokens (reflection)
  • 33 - bridge methods
  • 34 - cannot implement the same interface twice
  • 35 - multiple bounds; avoid unchecked cast; covariant return; need for lower bound?
  • 36 - limitatons on wildcards: no safe implementation of copyable Pair
  • 37 - converting legacy code to generic (compatibility with existing clients)