博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Generics and Collections-2.2
阅读量:5461 次
发布时间:2019-06-15

本文共 1251 字,大约阅读时间需要 4 分钟。

2.2 Wildcards with extends

前面介绍过List<Integer>不是List<Number>的子类,即前者不能替换后者,

java使用? extends [classname]语法,即List<Integer>
可以替换 List<? extends Number>
看两段代码:

package java_generics_collections.chap2;import org.junit.Test;import java.util.ArrayList;import java.util.List;/** * Created by jintaox on 2016/3/21. */public class Test_2_1 {    @Test    public void test_01() throws Exception {        List
ints = new ArrayList<>(); ints.add(3); ints.add(4);// List
nums = ints;//compile error// nums.add() }}

这是上一节介绍的内容,即List<Integer> 不能替换

List<Number>,语法编译不过,原因也介绍了。
下面这段代码:

package java_generics_collections.chap2;import org.junit.Test;import java.util.ArrayList;import java.util.List;/** * Created by jintaox on 2016/3/22. */public class Test_2_2 {    @Test    public void test_01() throws Exception {        List
ints = new ArrayList<>(); ints.add(1); ints.add(12); List
nums = ints;//compile pass// nums.add(2.3);//compile error }}

可以看出List<Integer> 可以替换

List<? extends Number>
但是nums.add(2.3)是不允许的,还是那个原因,nums调用的实际是ints的add()方法(多态),
add(Integer i),因此,此处放一个double是不能编译通过的。
好了。

加油,我要做技术专家。

转载于:https://www.cnblogs.com/xiaojintao/p/5306086.html

你可能感兴趣的文章
POJ3087 Shuffle'm Up 简单模拟
查看>>
Django中数据的增删改查
查看>>
iOS模拟器发生了崩溃,去哪找Crash Log
查看>>
[支付宝]即时到账接口对接总结
查看>>
夺命雷公狗-----React---15--三元运算符
查看>>
元首的愤怒 SharePoint Apps
查看>>
CSS
查看>>
两个DataGrid垂直滚动条同步滚动
查看>>
RPG的错排
查看>>
Java 7之基础 - 强引用、弱引用、软引用、虚引用
查看>>
位运算
查看>>
微软源代码管理工具TFS2013安装与使用图文教程
查看>>
JAVA中获取当前运行的类名,方法名,行数
查看>>
Nginx+PHP-FPM的域Socket配置方法
查看>>
集成通用Mapper
查看>>
SQL单表查询
查看>>
无服务器端的UDP群聊功能剖析 文章索引
查看>>
android studio 新建项目导入到Coding远程仓库git
查看>>
Pandas选择数据
查看>>
poj2411铺砖——状压DP
查看>>