Java 泛型机制允许程序员在编译时检验到非法的类型
Java 泛型(generics)是 JDK 5 中引入的一个新特征, 泛型提供了编译时范例安详检测机制,该机制应承措施员在编译时检测到犯科的范例。 简朴领略就是:泛型指定编译时的范例,镌汰运行时因为工具范例不匹配激发的非常。其首要用途是进步我们的代码的复用率。 我们Java尺度库中的ArrayList就是泛型行使的典范应用: public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
......
public ArrayList(Collection<? extends E> c) { elementData = c.toArray(); if ((size = elementData.length) != 0) { // c.toArray might (incorrectly) not return Object[] (see 6260652) if (elementData.getClass() != Object[].class) elementData = Arrays.copyOf(elementData, size, Object[].class); } else { // replace with empty array. this.elementData = EMPTY_ELEMENTDATA; } }
public void sort(Comparator<? super E> c) { final int expectedModCount = modCount; Arrays.sort((E[]) elementData, 0, size, c); if (modCount != expectedModCount) { throw new ConcurrentModificationException(); } modCount++; }
.....
public E get(int index) { rangeCheck(index);
return elementData(index); }
public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
} 源码中,ArrayList中的E称为范例参数变量,而整个ArrayList我们称为泛型范例。 我们可以指定除根基范例之外的任何范例,如:ArrayList。 源码中Collection 中? 通配符范例 暗树模例的上界,暗示参数化范例的也许是T 或是 T的子类。 源码中Comparator 暗树模例下界(Java Core中叫超范例限制),暗示参数化范例是此范例的超范例(父范例),直至Object。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |