• 泛型


    使用泛型的好处:

    泛型的用法是在容器后面添加<Type>,<Type>可以是类,抽象类,接口

    表示这种容器,只能存放这种类型(包括子类对象)

    Number的子类:int, float, double

    可以设计一个支持泛型的栈MyStack,设计这个类的时候,在类的声明上,加上一个<T>,表示该类支持泛型。

    T是typede缩写,也可以使用任何其他的合法的变量,比如A,B,X都可以,但是一般约定成俗使用T,代表类型

    ArrayList  heroList<?extends Hero>表示这是一个Hero泛型或者其子类泛型

    从heroList取出的对象,一定可以转型成Hero的,但是不能往里面放东西

    ArrayList heroList<? super Hero> = new ArrayList<Object>()表示这是一个Hero泛型或者其父类泛型

    可以往里面插入Hero以及Hero的子类,但是不能从里面取数据出来(可能转换类型失败)。

    特例:ArrayList<?> generalList = apHeroList;

    像这种形式只能用 Object o = generalList.get(0);取出来,因为?代表任意泛型

    总结:

    只取出,不插入,?extends Hero

    只插入,不取出,?super Hero

    如果希望,又能插入,又能取出,就不要使用通配符

    父类类型与子类类型不能相互转化,因为你不知道父类类型指向的是什么确切的类型

  • 相关阅读:
    Java 8 锁机制
    Elasticsearch学习资料
    数据库相关
    Linux常用Shell命令
    如何高效编写可维护代码?
    分布式开放消息系统(RocketMQ)的原理与实践(转载)
    学习Linux第六天(学习文件权限和特殊权限)
    各大网络厂商列表
    Linux服务器系统信息查询
    关于情感
  • 原文地址:https://www.cnblogs.com/zxj-262410/p/8490308.html
Copyright © 2020-2023  润新知