九、泛型
来源:互联网 发布:js 解压缩 编辑:程序博客网 时间:2024/04/30 19:58
九、泛型
泛型两大特性:擦除(出现限制)和不协变(出现通配符)
1)限制条件:
1.不能使用基本类型
原因:因为Object类型不能储存如double的值。
2.不能抛出也能不捕获泛型类型实例
原因:Java编译器已限制。
3.参数化类型的数组 如:A<String> a = new A<String>() ;
原因:擦除的时候会将A<String>转化为Object,故把参数丢失了。
4.运行时类型查询只适用于原是类型
原因:因为运行时Java虚拟机中的对象总是一个特定的非泛型类型。如a instanceof A<String>仅仅判断a是否属于A,而不是A<String>。
2)使用方式:
①<?>
②<T>
③<? extends A> 限制了?的上限,即?必须是A或A的子类
④<T extends A> 限制了T的上限,即T必须是A或A的子类
⑤<? super A> 限制了?的下限,即?必须是A或A的父类
⑥<T super A> 限制了T的下限,即T必须是A或A的父类
问题一:为什么出现通配符(?)?
原理:泛型是不协变的(数组是协变的):因为类型参数(T)使用必须是一个类型,当出现List<Integer>与List<Number>相互赋值的时候,使用类型参数(T)将会报错,尽管Integer是Number的子类。因为类型参数已经设 置准确的类型是List<Integer>。当使用通配符的时候,将会解除这个限制 如Collection中的addAll()。
addAll():interface Collection<E>{
public boolean addAll(Collection<? extends E> c) ;
}
0 0
- 九、泛型
- Java Reflection(九):泛型
- Java Reflection(九):泛型
- 九
- 九
- Java Reflection(九):泛型
- 九九
- 九九
- java基础学习要点九:泛型
- Java学习笔记九(泛型)
- Java基础(九)——泛型
- 九九算法源码
- 九九乘方表
- 九九算盘
- 生活九九
- 九九矩阵
- 九九矩阵
- 九九矩阵
- 使用Dom4j解析XML
- 小米会成为三星没落的因素吗?
- DML Error Logging in Oracle 10g Database Release 2
- css选择器
- [挑战程序设计竞赛] AOJ 0033 - Ball
- 九、泛型
- Android 多语言
- 个华盛顿噶风sgs大风
- Sharepoint2013以其他用户登录配置
- ubuntu下Zookeeper伪分布安装
- 使用JAXP进行SAX解析
- 在Heroku上部署web.py应用
- Vim 修改文件换行符格式
- Querying a DHCP server in C#