没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
3页
1. List<? extends T> List<? extends T> 表示这个列表可以包含类型为 T 或 T 的子类型的对象。换句话说,这个列表可以是一个 T 类型的列表,也可以是一个 T 的任何子类型的列表。 2. List<? super T> List<? super T> 表示这个列表可以包含类型为 T 或 T 的超类型的对象。换句话说,这个列表可以是一个 T 类型的列表,也可以是一个 T 的任何超类型的列表。 ?表示类型通配符,即具体传什么参数类型,在List定义时不用考虑。 这里的 <T> 表示泛型,T 表示泛型中装载的类型为T类型,等到需要的时候,我们可以具体这个 T。我们在使用动态数组实现 ArrayList 的时候,如果希望这个 ArrayList 不仅仅支持一个类型的话,我们可以给这个 ArrayList 定义泛型,泛型中存放的是T类型。在实际创建出这个 ArrayList 对象时,我们可以指定泛型中的具体类型。
资源推荐
资源详情
资源评论
java中List<? extends T>与List<? super T>的区别
1. 名词解释
1.1 ?
?表示类型通配符,即具体传什么参数类型,在List定义时不用考虑。
1.2 <T>
这里的 <T> 表示泛型,T 表示泛型中装载的类型为T类型,等到需要的时候,我们可以具体这个 T。我们在使
用动态数组实现 ArrayList 的时候,如果希望这个 ArrayList 不仅仅支持一个类型的话,我们可以给这个
ArrayList 定义泛型,泛型中存放的是T类型。在实际创建出这个 ArrayList 对象时,我们可以指定泛型中的
具体类型。
1.3 <? extends T>
类型上界,这里的 ? 可以是 T 类型或者 T 的子类类型。
1.4 <? super T>
类型下界,这里的?可以是T类型或者T的超类(父类)类型,但不代表我们可以往里面添加任意超类类型的元
素。
2. <? extends T>与<? super T>区别
2.1 List<? extends T>
这个通配符表示列表中的元素类型是T或T的子类。我们可以将该列表视为只读列表,因为我们只能从中读取
元素,而不能添加或修改元素。这是因为编译器无法确定实际存储的元素类型。
可以安全地从该列表中读取元素并将其视为T类型或T的子类类型。
不能往该列表中添加任何对象,因为编译器无法确定实际存储对象的类型。
例如:
List<? extends Number> numbers = new ArrayList<Integer>();
Number number = numbers.get(0); // 读取操作
numbers.add(new Integer(10)); // 错误:无法添加 Integer 对象
public class Main {
static class A { }
static class B extends A { }
资源评论
孤蓬&听雨
- 粉丝: 6797
- 资源: 301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功