1、泛型没有多态
如果B是A的一个子类型(子类或者子接口),而G是具有泛型声明的类或接口,G<B>并不是G<A>的子类型!
比如:String是Object的子类,但是List<String >并不是List<Object>的子类。
public static void main(String[] args) { Fruit f = new Apple();//多态 //泛型没有多态 // ArrayList<Fruit> list = new ArrayList<Apple>();//泛型没有多态 ArrayList<? extends Fruit> list = new ArrayList<Apple>();//使用通配符可以 } |
2、没有泛型数组
public class TestGenericPolymophism {
public static void main(String[] args) { //泛型没有数组 // Tiger<String>[] as = new Tiger<String>[]; }
} class Tiger<T>{
} |
ArrayList源代码 public class ArrayList<E> 。。。{ transient Object[] elementData; public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; } public E get(int index) { rangeCheck(index); return elementData(index); } E elementData(int index) { return (E) elementData[index]; } } |
3、jdk1.7简化泛型
//jdk1.7,泛型的简化操作
ArrayList<Fruit> flist = new ArrayList<>();
4、不能在try-catch中使用泛型定义
try{
}catch(T t){}
}
上一篇: 前端培训出来参加工作是否都很累
下一篇: Java培训课程之Collections工具类