1
CSE 331
Generics (Parametric Polymorphism)
slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/
CSE 331 Generics (Parametric Polymorphism) slides created by Marty - - PowerPoint PPT Presentation
CSE 331 Generics (Parametric Polymorphism) slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/ 1 Parametric polymorphism parametric polymorphism :
1
slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/
2
3
4
5
T for Type, E for Element, N for Number, K for Key, or V for Value.
6
public class Foo<T> { private T myField; // ok private T[] myArray; // ok public Foo(T param) { myField = new T(); // error myArray = new T[10]; // error } }
7
public class Foo<T> { private T myField; // ok private T[] myArray; // ok @SuppressWarnings("unchecked") public Foo(T param) { myField = param; // ok T[] a2 = (T[]) (new Object[10]); // ok } }
8
public class ArrayList<E> { ... public int indexOf(E value) { for (int i = 0; i < size; i++) { // if (elementData[i] == value) { if (elementData[i].equals(value)) { return i; } } return -1; } }
9
public class ArrayList<E> implements List<E> { ... public class LinkedList<E> implements List<E> { ...
10
public class Collections { ... public static <T> void copy(List<T> dst, List<T> src) { for (T t : src) { dst.add(t); } } }
11
// tree set works for any comparable type public class TreeSet<T extends Comparable<T>> { ... }
12
13
14
15
16