泛型——泛型的继承性

1、泛型的类型参数声明格式如下,用于限定泛型的特性。其中,[ ]表示可选项,多个父类以&分割

类型变量  [extends 父类型列表]       //其中父类型列表中可以有多个

2、虽然Object是String的父类,但是SeqList<Object>却不是SeqList<String>的父类,那么SeqList<String>的父类是谁呢?

      Java约定泛型的类型参数用“?”通配符表示匹配类型,代表能够匹配任何类型,但是有两种限定通配符语法如下:

? extends  T     //?表示T及其任意一种子类型,T称为?的上界
? extends        //?表示T及其任意一种子类型,T称为?的下界

       SeqList<?  extends Object>简写成SeqList<?>,因此,SeqList<?>是所有SeqList<T>的父类,例如,SeqList<T>类声明的以下方法,参数list的元素类型是T或其任一子类:

public SeqList(SeqList <? extends T> list)  //深拷贝,list的元素类型是T或其任一子类
public SeqList(SeqList <? extends T> list)  //集合并,list的元素类型是T或其任一子类

调用语句如下:

Object[] objs = {"A","B",10,new Integer(20)};
SeqList<Object> listobj1 = new SeqList<Object>(objs);
String str[] = {"C", "D","E"};
SeqList<String> lists = new SeqList<String>(str);
SeqList<Object> listobj2 = new SeqList<String>(lists);
listobj1.addAll(lists);

结果运行:

listobj1 = (A,B,10,20,C,D,E),   listobj2=(C,D,E),    lists = (C,D,E)


猜你喜欢

转载自blog.csdn.net/yuangan1529/article/details/80174650