通配符?,?表示占位,表明将来使用的时候在指明类型

  • <?>无限定的通配符, 是让泛型能够接受未知类型的数据
  • <? 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>有上限通配符的更多相关文章

  1. Java泛型-通配符的上限和下限问题

    Java的泛型中,通配符可以设置上限和下限. 上限:<? extends T> ?是T和T的子类 下限:<? super T> ?是T和T的父类 怎么看待这个上限和下限呢 首先 ...

  2. Java泛型 通配符? extends与super

    Java 泛型 关键字说明 ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 <? super T> 表示类型下界(Java ...

  3. JAVA 泛型 通配符? extends super限定,实例区分extends super限定的作用用法

    java泛型中的关键字 ? 表示通配符类型 <? extends T> 既然是extends,就是表示泛型参数类型的上界,说明参数的类型应该是T或者T的子类. <? super T& ...

  4. 浅谈Java泛型之<? extends T>和<? super T>的区别

    关于Java泛型,这里我不想总结它是什么,这个百度一下一大堆解释,各种java的书籍中也有明确的定义,只要稍微看一下就能很快清楚.从泛型的英文名字Generic type也能看出,Generic普通. ...

  5. java 泛型详解(普通泛型、 通配符、 泛型接口)

    java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...

  6. Java泛型中extends和super的理解(转)

    E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定 ...

  7. java 泛型详解(普通泛型、 通配符、 泛型接口,泛型数组,泛型方法,泛型嵌套)

    JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能-----Java的泛型.  1.Java泛型  其实Java ...

  8. Java泛型中<? extends E>和<? super E>的区别

    这篇文章谈一谈Java泛型声明<? extends E>和<? super E>的作用和区别 <? extends E> <? extends E> 是 ...

  9. Java泛型中extends和super的理解

    作者:zhang siege链接:https://www.zhihu.com/question/20400700/answer/91106397来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

随机推荐

  1. js事件学习的小demo

    直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ...

  2. vue-cli项目接口地址可配置化(多环境部署)一处修改多处适用

    本文档目的在于帮助对vue了解比较少的同学,能够快速配置vue应用中的接口地址.方便项目切换服务环境后,重新修改多组件的http请求地址. 一.前言 我们在上一篇文章分享了vue-cli项目基本搭建( ...

  3. MyEclipse2015Stable3.0破解方法

    原理大概是这样的(个人粗略分析):获取当前的日期,来设置证书失效日期,解析后生成码-->再转码,最后生成序列号. 1.新建一个Java工程,(不会安装jdk创建环境变量的,请前往传送门:链接.) ...

  4. 团队的初体验与Scrum的初识

    一. 队名及宣言 队名: the better for you 宣言: Change our lives with code 二. 队员及分工 a.承担软件工程的角色 姓名 学号 角色 蒋 婷 B20 ...

  5. 编程思想的理解(POP,OOP,SOA,AOP) x

    http://blog.chinaunix.net/uid-29417436-id-4060980.html 1)POP--面向过程编程(Process-oriented programming ): ...

  6. redis未授权访问getshell

    redis未授权访问的问题一年前就爆了,当时刚开始学安全,还不太懂.今天借着工作的机会来搞一把,看看能不能拿下一台服务器.其实前几天就写好了一直想找个实际环境复现一下,一直没有找到,只说下大致思路. ...

  7. [18/11/22] 将点分十进制的IP地址化成二进制输出

    #include <stdio.h> void binary(int d){ ,j,n,b[]={}; ){ n=d%; d=d/; b[i++]=n; //不停的除2,余数保存在b[8] ...

  8. Centos安装VMware

    转载:http://www.mamicode.com/info-detail-2171464.html

  9. o'Reill的SVG精髓(第二版)学习笔记——第十章

    10.1 裁剪路径 创建SVG文档时,可以通过制定感兴趣区域的宽度和高度建立视口.这会变成默认的裁剪区域,任何绘制在该范围外部的部分都不会显示.你也可以使用<clipPath>元素来建立自 ...

  10. 由inline-block小例子引申出的一些问题,及IE6、IE7兼容性解决方案

    使用场景分析: 常见的对块与块之间的横向排列处理 对同级所有元素使用display:inline-block; , 之后块与块直接会产生间隙问题 解决办法: 给父级设 font-size:0; 别高兴 ...