zoukankan      html  css  js  c++  java
  • java中的泛型记录

    一、Java中<? extends T>和<? super T>的理解

    感谢总结者:参考地址https://www.cnblogs.com/chenxibobo/p/9655236.html

    总结如下:

    <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类;

    <? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object;

    上界

    <? extends T>不能往里存,只能往外取,虽然不能使用add方法,但是可以在初始化的时候一个son指定不同的类型。比如:

    List<? extends Father> list1 = getFatherList();//getFatherList方法会返回一个Father的子类的list

    List<?>单纯的就表示:集合里放了一个东西,是什么我不知道。

    下界

    <? super Father>只能添加Father和Father的子类,不能添加Father的父类,读取出来的东西只能存放在Object类里

    结论:

    1、extends 可用于返回类型限定,不能用于参数类型限定

    (? extends xxx 只能用于方法返回类型限定,jdk能够确定此类的最小继承边界为xxx,只要是这个类的父类都能接收,但是传入参数无法确定具体类型,只能接受null的传入)。

    2、super 可用于参数类型限定,不能用于返回类型限定

    (? supper xxx 只能用于方法传参,因为jdk能够确定传入为xxx的子类,返回只能用Object类接收)。

    3、? 既不能用于方法参数传入,也不能用于方法返回。

  • 相关阅读:
    异常定义-Mybatis中的源码参考
    前置机介绍说明
    MyBatis源码解析(一)
    Mybatis思
    石杉的架构笔记(一)
    nacos启动
    JVM图解
    二叉搜索树的第K大节点
    第一个只出现一次的字符
    表示数值的字符串
  • 原文地址:https://www.cnblogs.com/zyanrong/p/11915323.html
Copyright © 2011-2022 走看看