(三)泛型学习笔记—通配符
来源:互联网 发布:c语言多线程实例 编辑:程序博客网 时间:2024/06/07 18:36
通配符有三种:
1、无限定通配符 <?>
可以接受任何的实际类型作为泛型实参。
无界通配符<?>的输入唯一可接受的是可为所有类型的null。(因为<?>能接受任何的实际类型,但不确定到底是哪个实际类型。然而任何对象都可以接受null作为其值。所以输入只能接受null)
无界通配符的输出类型始终为Object(因为其意义为接受任何的实际类型作为泛参,而任何的实际类型都可以被转换为Object类型)
2、上边界限定通配符 < ? extends String>
可以接受其指定类型或其子类作为泛型实参
上边界限定通配符 < ? extends String> 的输入唯一可接受的是可为所有类型的null
上边界限定通配符 < ? extends String> 的输出类型为指定的类型
3、下边界限定通配符 < ? super String>
可以接受其指定类型或其父类作为泛型实参
下界通配符的输入类型为指定的类型或对应的子类类型
下边界限定通配符 < ? super String> 的输出类型始终为Object
举个例子:
class Person{}class Women extends Person{}class Student extends Women {}
定义一个集合,设定泛型上边界,结果报错。ArrayList<? extends Person> al =new ArrayList<>(); al.add(new Women()); //报错 al.add(new Person()); /报错 al.add(new Student()); //报错因为上边界输入唯一可接受的时null。
改成下边界之后可以通过编译。因为下边界的输入类型为指定类型或对应的子类类型。
ArrayList<? super Person> al =new ArrayList<>(); al.add(new Women()); al.add(new Person()); al.add(new Student());4.PECS原则:
阅读全文
1 0
- (三)泛型学习笔记—通配符
- 学习Linux笔记(三)-通配符、alias
- java泛型编程学习 笔记三:泛型继承规则以及通配符“?”使用
- linux学习笔记—通配符
- Struts2学习笔记—通配符
- 【web开发学习笔记】Structs2 Action学习笔记(三)action通配符的使用
- 学习笔记——XML Schema通配符
- Struts2学习笔记——ActionWildcard(通配符)
- Linux学习笔记(二十三、通配符)
- java泛型的使用(三)通配符的使用
- 三句话总结JAVA泛型通配符(PECS)
- Java 泛型总结(三):通配符的使用
- JAVA学习笔记36——泛型2:泛型继承、擦除+泛型接口+泛型无多态、通配符
- JAVA学习第四十二课 — 泛型(二)—泛型接口&&通配符应用
- Struts2 学习笔记 —— 06 —— ActionWildCard 通配符
- Struts2学习笔记(一)——命名空间、路径、通配符
- Struts2学习笔记(一)——命名空间、路径、通配符
- linux下的学习笔记——通配符与特殊符号
- 柏林曼の蓝色的泪
- LightOJ-1001-Opposite Task
- RGB和HSV的关系
- HTML之JavaScript自学笔记(4)
- 二分搜索及其变形应用
- (三)泛型学习笔记—通配符
- 【网络流24题】数字梯形(二分图+最大费用流)
- 算法符号Θ, O, Ω
- Noip2016 Day1 T1 玩具谜题(字符串模拟)
- 【shell编程学习】for 和 while循环
- Java网页数据采集器[下篇-数据查询]
- 算是面试题, 写的不算工整.....
- 线程基础:多任务处理——Fork/Join框架(要点1)
- 拓扑排序 家谱树&&奖金