0、之所以需要泛型编程,是为了能让同样的功能处理不同类型的数据,就是为了突破类型限制复用代码功能。
1、关于泛型编程有一个核心需要记住:类型参数化,也即类型是一种可变的参数。
2、泛型有三种使用方式:泛型类、泛型接口、泛型方法。
3、
// 泛型接口
public interface Map<K, V> {
}
// 泛型类
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable{
// 泛型方法
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
}
泛型代码在编译时类型参数会被去掉,编程一个普通的类型,泛型参数有上下界的用上下界类型替换,没有的用Object替换。