泛型的概述:
是jdk5中引入的特性,它提供了编译时类型安全机制,该机制允许在编译时检测到非法的类型。
它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递参数。参数化类型就是将类型由原来的具体的类型参数化,然后在使用,调用时传入具体的类型。这种参数类型可以用在类,方法和接口中,分别被称为泛型类,泛型方法,泛型接口。
泛型定义格式:
- <类型 >:指定一种类型的格式,这里的类型可以看成是形参
- <类型1,类型2……> 指定多种类型的格式,多种类型之间用逗号隔开,这里的类型可以看成是形参。
- 将来具体调用的时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型
泛型的好处:
- 把运行的时期的问题提前到了编译期间
- 避免了强制类型性转换
- 泛型类
修饰符 class 类名<类型> { }
- 泛型方法
修饰符 <类型> 返回值类型 方法名(类型 变量名) { }
- 泛型接口
修饰符 interface 接口名<类型> { }
类型通配符:
- 类型通配符的作用:
- 为了表示各种泛型List的父类,可以使用类型通配符
- 类型通配符的分类
- 类型通配符 <?>
- List<?>:表示元素类型未知的List,它的元素可以匹配任何类型
- 这种带通配符的List仅表示它是各种泛型List的父类,并不能把其中的元素添加到其中
- 类型通配符上限 <? extends 类型>
- List<? extends Number>:它表示的类型是Number或者其子类型
- 类型通配符下限 <? super 类型>
- List<? super Number>:它表示的类型是Number或者其父类型