• java 深入技术五 (泛型)


    1.泛型概述

    泛型的本质:参数化类型

     定义

    Object obj=new Object();//并不是所有类都可以使用泛型

    List <String> list=new ArrayList<String>();//在后面加上类型

    2.泛型的声明和使用

    使用<T>表示泛型

    List<E>

    声明泛型,使用泛型

    泛型语法:声明类的同时声明泛型<T>,表示一个参数化类型,在声明类变量和实例化对象时,需要给泛型参数传递一个具体的类型值

    Class Demo<T>{

    Demo <String> demo=new Demo<String>();

    这种参数类型可以声明在类,接口和方法的定义中,分别称为泛型类,泛型接口,泛型方法

    使用泛型的步骤:1.定义泛型类2.使用泛型类

    好处:安全 把运行时异常提前到编译期

    好处:简单 不需要进行显示类型转换

    向后兼容 List list=new ArrayList<String>();是正确的

    泛型不协变:List <Object>list=new ArrayList<String>();是不正确的

    3. 集合和泛型的绝配

    集合中的所有类都定义了泛型,都支持泛型操作

    希望在实际使用时,可以指定为特定的类型

     4. 泛型的其他特点

    泛型的向后兼容:List list=new ArrayList<String>();

                           list.add(1);

                          list.add("wo");

    注意:如果两边都声明了泛型,泛型类型必须一致

             可以一端有一端没有

             泛型的决定权在变量这边,在左边

    泛型两边不支持继承关系

     List<Object> list=new ArrayList<String>();

     5.有限制泛型extends

    类型通配符<?>可以用来给<T>赋值,表示任意类型

    有限制泛型:在声明泛型的时候,给这个泛型可以接受的类型值一个约束,比如

    class Deme<T extends Number>{} 表示Demo类只能操作数值类型的对象,如 Integer,Double

    <T extends Collection> extends 指定Colletion 是上限

    <? super Student > super 指定Student是下限

    <? extends Colletion> 类型通配符和限制泛型合作,使得可以使addAll方法将Collection<Integer>的内容

    6.有限制泛型和通配符的配合使用

     当你使用泛型明确规定了List里面可以添加元素的类型,如果再添加其他类型的元素,编译器会报错

    实例化对象.泛型得相同
      // demo = new Demo<String>();

    // T只能接受Number及其子类
      Demo3<Integer> demo3 = new Demo3<Integer>();

    当通配符和有限制泛型配合使用时,可以使变量接受更多类型参数泛型的变量

    /有泛型通配符时,不能调用和泛型有关的方法

    Demo3<? extends Number> demo4=new Demo3<Number>();
      demo4=new Demo3<Integer>();
      demo4=new Demo3<Double>();

    //demo4.show(new Integer(1));

    如果在声明变量时,没有使用泛型,默认为Number;上限

    //泛型通配符和有限制泛型结合使用,常用在方法声明中,常用在方法的参数上

     7. 有限制泛型super

    1.super,不可以在泛型声明中使用,可以喝通配符配合使用

    2.super指定了变量可以接受对象的泛型的下现,本身或者父类

    3. super可以调用和泛型有关的方法,方法的参数就是下现

  • 相关阅读:
    Analysis Services features supported by SQL Server editions
    Azure DevOps to Azure AppServices
    Power BI For Competition
    Win10开机“提示语音”以及”随机播放音乐”
    Azure DevOps
    Allow Only Ajax Requests For An Action In ASP.NET Core
    Mobile CI/CD 101
    Configure SSL for SharePoint 2013
    AWS Step Function Serverless Applications
    Cordova Upload Images using File Transfer Plugin and .Net core WebAPI
  • 原文地址:https://www.cnblogs.com/shiyeyeyeye/p/5036689.html
Copyright © 2020-2023  润新知