零基础Java:第二十二讲(泛型)

79

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

为什么要有泛型Generic?

  • 为什么要有泛型Generic?

    • 泛型,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这样在类的声明或实例化时只要指定好需要的具体的类型即可。
    • Java泛型可以保证如果程序在 编译时没有发出警告,运行时就不会产生ClassCastException异常。同时,代码更加简洁、健壮。
    • 举例
    • Java中的泛型,只在编译阶段有效,泛型信息不会进入运行阶段。

泛型的使用

  • 泛型的使用

    • 泛型类

      • 对象实例化时不指定泛型,默认为:Object
      • 泛型不同的引用不能相互赋值
      • 举例

        • 定义一个泛型类
        • 操作实现
    • 泛型接口

      • 定义一个泛型接口(分别定义了为传入实参和传入实参的两种情况)
    • 泛型方法

      • 方法,也可以被泛型化,不管此时定义在其中的类是不是被泛型化的,在泛型方法中可以定义泛型参数,此时,参数的类型就是传入数据的类型
      • 总结:

        • 泛型方法,在调用之前没有固定的数据类型
        • 在调用时,传入的参数是什么类型,就会把泛型改成什么类型
        • 也就是说,泛型方法会在调用时确定泛型的具体数据类型
        • 举例
    • 泛型通配符

      • 作用:在不确定集合中的元素具体的数据类型,使用?表示所有类型
      • 举例
      • 有限制的通配符

        • 类别

          • 第一类:List<?> list
          • 第二类:List<? extends Person> list(只允许泛型为Person及Person子类的引用调用)
          • 第三类:List<? super Person> list(只允许泛型为Person及Person父类的引用调用)
          • 第四类:List<? extends Comparable> list(只允许泛型为实现Comparable接口的实现类的引用调用)
        • 举例