美文网首页
泛型的使用

泛型的使用

作者: 小_小_程序猿 | 来源:发表于2018-01-13 15:11 被阅读0次

     泛型的运用:

      需求:

               定义一个方法,可以接受任意数据类型,而且要求返回的数据类型,就是你传入的数据类型

      例如:

               传入String,返回String

                传入Demo3类型,返回Demo3类型

      泛型:

               占位符!!!<一个大写字母>,只是一个占位符,没有实际含义,而且不同地方定义的占位符没有联系

      泛型在函数中使用的格式

      修饰符 <声明的自定义泛型占位符> 返回值类型(可以使用自定泛型) 函数名(形式参数列表"也可以使用泛型") {

      函数体

      在函数体中,所有用到自定义泛型的地方,都可以被替换

      }

      包装类

      Java是完全面向对象的语言,在Java中万物皆对象,如果是要保存类对象,那么8大基本数据类型就无法使用所以,Java提供了一个包装机制,包装基本数据类型,让他们变成类对象,

      自动封箱

      Integer -> int

      Byte -> byte

      Long -> long

      Short -> short

      Double -> double

      Float -> float

      Boolean -> boolean

      Character -> char

      如果使用包装类直接赋值给普通的基本数据类型,这个操作称之为 拆箱

    在类内使用泛型

    格式:

    class 类名<自定义泛型的占位符> {

    //在这里所用到的泛型和用户创建对象时声明的一致

    }

    注意事项:

    1. 一个类声明的自定义泛型,如果在创建该类对象时,确定了泛型的具体数据类型,那么

    在整个类内所有用到该泛型占位符的非静态成员方法,使用的数据类型都是创建时确定的类型

    2. 如果创建使用了自定义泛型类对象,但是没有确定泛型的具体类型,那么编译器会把这个

    泛型认为是Object类型

    3. 类中声明的自定义泛型,不能对类内的静态方法使用,如果想让静态方法使用泛型, 自娱自乐

    自己声明,自己使用,类似方法中使用泛型

    4. 建议:如果在代码中出现了多个使用不同泛型的地方,请使用不同的名字 T E

    在接口中定义泛型

    格式 :

    interface 接口名<自定义泛型的占位符> {

    //成员变量  缺省属性:public static final 定义时必须初始化

    //成员方法  缺省属性:abstract

    }

    两种【遵从】带有自定义泛型的接口方式:

    1. 更加自由,需要使用的泛型类型,在创建对象时确定,类似ArrayList

    2. 适合原本这个类就没有使用泛型的情况,例如:一个类遵从Comparable接口

    事项compareTo方法,这里可以在【遵从】时,确定Comparable需要的泛型

    具体数据类型,减少没有必要的强制类型转换

     泛型的上下限

    T 泛型的占位符

    ? 通配符

    super: 调用父类方法的关键字

    extends: 继承的关键字

    需求:定义一个函数接受任意类型数值的集合,但是这个数据必须是数值类型

    数值类型:Number 已知子类:Integer Short Long Double Float (包装类)

    要求传入的对象是Number类对象或者其子类对象

    Integer extends Number;

    Float extends Number;

    Double extends Number;

    ? extends Number;

    这就是泛型的上限:

    需求:定义一个函数能够传入一个任意类型的集合,但是要求集合里面保存的数据必须是Number类对象,或者其父类对象

    泛型的下限

    能够保存的数据是Number类对象本身或者其父类对象

    相关文章

      网友评论

          本文标题:泛型的使用

          本文链接:https://www.haomeiwen.com/subject/mwpcoxtx.html