Java中的泛型

xiaoxiao2021-02-28  10



  【先写个例子,帮助理解泛型的格式】

ArrayList<String> list = new ArrayList<String>();//【标准格式】  ArrayList<Object> list = new ArrayList<String>();  //false  ArrayList<String> list = new ArrayList<Object>();  //false    【允许的,为了照顾新老版本问题 】 Android开发中  ArrayList list3 = new ArrayList<String>(); true 语法没有问题, 但是会报警告  ArrayList<String> list2 = new ArrayList(); true 语法没有问题, 但是会报警告

*********************************************************************************************

集合中的泛型

   在集合的代码中,有两个很特殊东西     <? extends E>     <? super E>    E 是泛型    extends 继承    super 调用父类方法的关键字    ? 通配符        需求1:定义一个函数可以接受任意类型,但是这个任意类型必须是数值类型      也就是Number类或者Number的子类          这里约束的是【泛型的上限】   Integer extends Number   Float extends Number   Double extends Number      ? extends Number      上限:    ? extends 要求的数据类型,这里要求能够使用的数据类型是要求数据类型本身或者其子类数组    需求2: 定义一个函数只能接受Integer类型或者其父类类型的集合     下限:    ? super 要求的数据类型  这里要求能够使用的数据类型是要求的数据类型本身及其父类      泛型中通配符:   ?

************************************************************************************************************

自定义泛型

泛型的运用:     需求:     定义一个方法,可以接收任意类型的参数,而且要求返回值类型也是接收的数据类型     例如:接收String  返回String       接收int 返回int          自定义泛型!     定义一个标识符!,格式   <大写字母>        1.在函数中使用泛型格式:    修饰符  <声明自定义泛型的占位符>  返回值类型//返回值也可以是泛型  函数名(自定义泛型 参数列表, 其他数据类型 参数列表) {        }        泛型中不能直接使用基本数据类型,都是有对应的包装类型    byte   --> Byte    short  --> Short    int    --> Integer    long   --> Long        double --> Double    float  --> Float        boolean --> Boolean        char --> Character

2.类使用泛型

在自定义类中使用自定义泛型   class 类名<自定义泛型> {    //在这里所用用到和类名一致的自定义泛型的位置,都是相同的数据   }    注意:   1. 类名中声明了自定义泛型的情况下,如果该类中使用了和类名自定义相同的泛型,不能用到   static修饰的方法中  【在static修饰的方法中不能使用类名声明的自定义泛型】      2. 当一个类使用了自定义泛型,在创建该类的对象的时候,给予了泛型的具体类型,那么在这个类   当中所有使用到这个泛型的位置都会变成这个具体的数据类型      3. 如果一个要求有泛型的类对象,在创建的时候没有给予具体的数据类型,所有使用到该泛型的   位置都会变成Object     [问题]  在一个用泛型修饰的类当中,static修饰的方法,能否使用泛型???  如果是static修饰的方法, 指定使用当前方法自定义的泛型

3.接口中使用自定义泛型      interface 接口名<自定义泛型> {    成员变量; //public static final    成员方法; //abstract   }      注意事项:   ( 1). 如果一个类【遵从】接口,而且这个接口是带有自定义泛型的,那么这个类就是要在类名之后加上对应    泛型    (2). 如果一个类【遵从】接口,而且这个接口是带有自定义泛型的,那么里面所有【遵从】接口要完成的方法    使用到的泛型,都是接口规定的泛型        (3.) 有两种【遵从】方式,第一种:使用泛型【遵从】       第二种:【遵从】的时候,给定具体的数据类型              PlanA:                  这个泛型的具体数据类型是通过用户创建该类的对象时提供的,可以更加具体的使用情况,做成                  不同的数据类型          PlanB:                  这个泛型在【遵从】时已经确定,那么这个泛型意义不大         [推荐使用PlanA,根据实际情况,确定泛型的类型}

转载请注明原文地址: https://www.6miu.com/read-200054.html

最新回复(0)