• Java基础第二十五天总结——泛型


    目录:

    一、为什么要有泛型

    二、在集合中使用泛型

    三、自定义泛型结构

    四、泛型在继承上的体现

    五、通配符的使用

    六、泛型应用举例

    /*--------------------分割线--------------------*/

    一、为什么要有泛型

    1.解决元素存储的安全性问题。

    2.解决获取数据元素时,需要类型强制转换的问题。

     

    二、在集合中使用泛型

    ArrayList<Integer> list = new ArrayList<>();

    基本数据类型需要用到包装类。

    三、自定义泛型结构

    泛型的声明:

    interface List<T> 和class GenTest<K,V>

    其中T,K,V表示类型,常用T表示。

    泛型的实例化:

    一定要在类名后面指定类型参数的值(类型)。

    List<String> strList = new ArrayList<String>();

    把一个集合中的内容限制为一个特定的数据类型,这就是generics背后的核心思想。

    使用泛型的主要优点是能够在编译时而不是在运行时检测错误。

    1.泛型类可能有多个参数,此时应将多个参数一起放在尖括号内。如:

    <E1,E2,E3>

    2.泛型类的构造器如下:public GenericClass(){}。

    3.实例化后,操作原来泛型位置的结构必须与指定的泛型类型一致。

    4.泛型不同的引用不能相互赋值。

    5.泛型如果不指定,均按Object处理。

    经验:泛型要使用一路都用,要不用,一路都不要用。

    6.如果泛型结构是一个接口或抽象类,则不可创建泛型类的对象。

    7.静态方法中不能使用类的泛型。

    8.异常类不能是泛型。

    9.父类有泛型,子类可以保留也可以指定泛型类型。

    泛型方法的格式:

    [访问权限]  <泛型> 返回类型 方法名 ([泛型表示 参数名称]) 抛出的异常

    四、泛型在集成上的体现

    五、通配符的使用

    List<?>是List<Object>List<String>等各泛型的父类。

    null是所有类型的成员。

    通配符指定上限:

    上限extends:使用时指定的类型必须是继承某个类,或者实现某个接口即 <=

    通配符指定下限:

    下限super:使用时指定的类型不能小于操作的类,即>=

    <? extends Number> (无穷小 , Number]
    只允许泛型为Number及Number子类的引用调用
     <? super Number> [Number , 无穷大)
    只允许泛型为Number及Number父类的引用调用
     <? extends Comparable>
    只允许泛型为实现Comparable接口的实现类的引用调用

    六、泛型应用举例

  • 相关阅读:
    车载以太网 doip someip
    pytest
    lauterbach
    django
    django info
    Linux上加了kdb,softlock
    jenkins war
    Ubuntu 编译安装 Python3.6.8 没有正确编译 sqlite3 的问题
    HTB靶场记录之Bank
    HTB靶场记录之SolidState
  • 原文地址:https://www.cnblogs.com/zhoutie170821/p/12056679.html
Copyright © 2020-2023  润新知