java泛型<? extends E> 有上限通配符与<? Super E>有上限通配符
通配符?,?表示占位,表明将来使用的时候在指明类型
- <?>无限定的通配符, 是让泛型能够接受未知类型的数据
- <? extends E> 有上限通配符,能够接受指定类及其子类类型的数据,E就是该泛型的上边界
- 注意:这里不仅继承了父类E的子类,也可以代指显现了接口E的类
- <? super E>:有下限的通配符。能够指定其父类类型的数据,E就是该泛型类型的下边界。
- 注意:你可以为一个泛型指定上边界或者下边界,但是不能同时指定上下边界
与<T>类型比较
- 比起<T>类型,<?>通配符不需要定义类型,传入的默认为Object,所以在方法返回值使用<?>需要将Object向下转型为需要的类型
- 可以直接在类中定义静态方法,因为其<?>的类型默认为Object,是确定的类型,不需要像<T>要在方法返回值之前进行定义
public static void main(String[] args) {
List<Person1> personList = new ArrayList<>();
personList.add(new Person1("", ""));
personList.add(new Person1("", ""));
personList.add(new Person1("", ""));
print(personList); System.out.println("======================"); List<Man> manList = new ArrayList<>();
manList.add(new Man("", ""));
manList.add(new Man("", ""));
manList.add(new Man("", ""));
print(manList);
} /**
* List<? extends Person1> :有上限的通配符,表示传入的对象只能是Person1 或其的子类, <E>元素类型代表这个泛型通配符的上限
* @param list
*/
static void print(List<? extends Person1> list) {
for (Object o : list) {
System.out.println(o);
}
}
<? Super E>有上限通配符
- 只能传递有E 及其父类到上限通配符中
java泛型<? extends E> 有上限通配符与<? Super E>有上限通配符的更多相关文章
- Java泛型-通配符的上限和下限问题
Java的泛型中,通配符可以设置上限和下限. 上限:<? extends T> ?是T和T的子类 下限:<? super T> ?是T和T的父类 怎么看待这个上限和下限呢 首先 ...
- Java泛型 通配符? extends与super
Java 泛型 关键字说明 ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 <? super T> 表示类型下界(Java ...
- JAVA 泛型 通配符? extends super限定,实例区分extends super限定的作用用法
java泛型中的关键字 ? 表示通配符类型 <? extends T> 既然是extends,就是表示泛型参数类型的上界,说明参数的类型应该是T或者T的子类. <? super T& ...
- 浅谈Java泛型之<? extends T>和<? super T>的区别
关于Java泛型,这里我不想总结它是什么,这个百度一下一大堆解释,各种java的书籍中也有明确的定义,只要稍微看一下就能很快清楚.从泛型的英文名字Generic type也能看出,Generic普通. ...
- java 泛型详解(普通泛型、 通配符、 泛型接口)
java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...
- Java泛型中extends和super的理解(转)
E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定 ...
- java 泛型详解(普通泛型、 通配符、 泛型接口,泛型数组,泛型方法,泛型嵌套)
JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能-----Java的泛型. 1.Java泛型 其实Java ...
- Java泛型中<? extends E>和<? super E>的区别
这篇文章谈一谈Java泛型声明<? extends E>和<? super E>的作用和区别 <? extends E> <? extends E> 是 ...
- Java泛型中extends和super的理解
作者:zhang siege链接:https://www.zhihu.com/question/20400700/answer/91106397来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...
随机推荐
- Selenium2学习(八)-- 操作元素(键盘和鼠标事件)
前言 在前面的几篇中重点介绍了一些元素的到位方法,到位到元素后,接下来就是需要操作元素了.本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件 有些web界面的选项菜单需要鼠标悬停在某个元素 ...
- apache ab 测试 apr_socket_connect(): 由于目标机器积极拒绝 无法连接
遇到这种情况一般是你开的并行数量太多了...例如:ab -c 1000 -n 10000 http://localhost/index.html 如此大的请求就会挂掉,不过还是有补救措施的,可以通过增 ...
- Android(java)学习笔记54:Android 调用Vibrator震动功能
1. 之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; i ...
- 【洛谷5287】[HNOI2019] JOJO(主席树优化KMP)
点此看题面 大致题意: 每次往一个字符串末尾加上\(x\)个字符\(c\),或者回到某一历史版本,求\(KMP\)的\(\sum Next_i\). 问题转化 考虑到可以离线. 于是,我们就可以用一个 ...
- iOS 适配安装包
每次自己需求都是去一顿搜索,所以就在此记录一下,免得以后再麻烦. 链接: https://pan.baidu.com/s/1zXEFlt94bz3O1e3GdtG92w 密码: rc4k 摘抄自:ht ...
- c#写入配置文件(text)
1.获取当前时间 System.DateTime currentTime = new System.DateTime(); currentTime = System.DateTime.Now; 写入配 ...
- HTTP请求方式中8种请求方法(简单介绍)
简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的.当我们没有指定端口访问时,浏览器会 ...
- 卸载由源码编译安装的软件(如OpenCV)
看安装软件的时候有没有使用--prefix这个参数,如果有那就把你指定的文件给删除了就行了. 如果没有用这个参数就麻烦一点了,那就进入到软件解压后的目录,执行sudo make uninstall看能 ...
- 轻量ORM-SqlRepoEx (二)初始化SqlRepoEx
一.SqlRepoEx引用 暂时没放至nuget上,可以直接到https://github.com/AzThinker/SqlRepoEx下载源码,编译引用. (一).静态引用 1.需引用以下dll在 ...
- maven settings 设置
首页 新随笔 联系 管理 国内阿里Maven仓库镜像Maven配置文件Maven仓库速度快 国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. 最新 ...