• 让天下没有难学的技术
    多数学员都来自推荐,这就是口碑的力量

java开发技术泛型的特殊点

1、泛型没有多态

如果B是A的一个子类型(子类或者子接口),而G是具有泛型声明的类或接口,G<B>并不是G<A>的子类型!

比如:String是Object的子类,但是List<String >并不是List<Object>的子类。

java开发技术泛型的特殊点
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培训课程内容欢迎关注尚硅谷java培训,尚硅谷除了这些技术文章外还有免费的高质量大 java培训课程视频供广大学员下载学习。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注