泛型概述

泛型:是JDK5中引入的特性,它提供了编译时类型安全检测机制
泛型的好处:

  • 把运行时期的问题提前到了编译期间
  • 避免了强制类型转换

泛型可以使用的地方:
类后面 泛型类
方法申明上 泛型方法
接口后面 泛型接口

泛型类总结

如果一个类的后面有,表示这个类是一个泛型类。
创建泛型类的对象时,必须要给这个泛型确定具体的数据类型。
泛型的定义格式:

  • <类型>:指定一种类型的格式。
    尖括号里面可以任意书写,按照变量的定义规则即可,一般只写一个字母
    比如:
  • <类型1,类型2……>:指定多种类型的格式,多种类型之间用逗号隔开
  • 格式:修饰符 class 类名<类型> {}
  • 范例:public class Generic<Y>{}
    此处的T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型

    泛型方法

    泛型方法的定义格式:

  • 格式:修饰符 <类型> 返回值类型 方法名(类型 变量名){}

  • 范例:public <T> void show(T t){}

    泛型接口

    泛型接口的使用方法:

  • 实现类也不给泛型

  • 实现类确定具体的数据类型

泛型接口的定义格式:

  • 格式:修饰符 interface 接口名<类型>{}
  • 范例:public interface Generic<T>{}

    类型通配符

  • 类型通配符:<?>

  • ArrayList<?> : 表示元素类型未知的ArrayList,它的元素可以匹配任何的类型
  • 但是不能把元素添加到ArrayList中了,获取出来的也是父类类型
  • 类型通配符上限:<? extends 类型>
  • 类型通配符下限:<? super 类型>