泛型与继承的关系,通配符
2014-12-08 17:22
483 查看
1 若类A是类B的子类,那么List<A>就不是List<B>的子接口
2 通配符:List[A],List[B]...都是List<?>的子类
extends A:可以存放A及其子类
super A:可以存放A及其父类
3 可以读取声明为通配符的集合类的对象,但不允许向声明为通配符的集合类中写入对象,唯一例外的是null。
2 通配符:List[A],List[B]...都是List<?>的子类
extends A:可以存放A及其子类
super A:可以存放A及其父类
@Test //泛型与继承 public void test4(){ List<?> list = null; List<Object> list1 = null; List<Character>list2 = new ArrayList<Character>(); //list1 = list2; 错误 list = list1; list = list2; getList(list1); getList(list2); List<? extends Number> a1 = null; List<Integer> a2 = null; a1 = a2; List<Object> a3 = null; List<? super Number> a4 = null; a4 = a3; } public void getList(List<?> list){ }
3 可以读取声明为通配符的集合类的对象,但不允许向声明为通配符的集合类中写入对象,唯一例外的是null。
@Test public void test5(){ List<String> list1 = new ArrayList<String>(); list1.add("ff"); list1.add("vb"); List<?> list2 = null; list2 = list1; //可以读取声明为通配符的集合类的对象 Iterator<?> ite = list2.iterator(); while(ite.hasNext()){ System.out.println(ite.next()); //返回Object类型 } //但不允许向声明为通配符的集合类中写入对象,唯一例外的是null //list2.add("sfd"); ---------错的 list2.add(null); }
相关文章推荐
- 泛型类型与通配符之间的关系
- JavaSE8基础 泛型通配符? extends 继承指定父类
- 使用通配符和泛型:完成父子类关系的List对象的类型匹配
- java泛型编程学习 笔记三:泛型继承规则以及通配符“?”使用
- JAVA学习笔记36——泛型2:泛型继承、擦除+泛型接口+泛型无多态、通配符
- 泛型的继承和通配符,同时归纳集合部分的面试点
- Java 使用泛型 泛型之间继承关系
- List中使用继承关系泛型 实战
- 集合 ArrayList 集合的继承实现关系 Collection Iterator迭代器 增强for循环 泛型 集合的向下转型
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- 多级继承(继承关系)中构造方法是的调用规则
- Spring4之Bean之间的关系(继承、依赖、引用)Bean的作用范围
- 【深入理解JVM】:Java类继承关系中的初始化顺序
- C++类继承关系
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- CSS中行高的继承和单位之间的关系
- bean之间的关系:继承、依赖
- 关于类继承时各种变量的继承关系
- Python(2.7.6) 异常类的继承关系
- C++继承体系中Is a 关系 和has a关系