泛型
泛型的概述
1. JDK1.5新特性。
2. 泛型可以使用在方法上,类上,接口上。
3. 泛型变量可以理解为是某种数据类型的占位符。
4. 泛型变量还可以理解为是某种数据类型的变量。
5. 泛型变量的命名规则:只要是合法的标识符就可以,一般使用一个大写字母表示
常用的泛型变量名有:T type E element K key V value
1 泛型方法的概念
在定义方法时定义了泛型变量的方法就是泛型方法
泛型方法的定义格式
修饰符 <T> 返回值类型 方法名(参数列表) { }
泛型方法的注意事项
1. 调用方法时,确定泛型的类型,如果没有指定,则默认是Object
2. 泛型变量的具体数据类型是由调用者调用方法时传参决定。
3. 泛型变量的具体数据类型不能是基本数据类型,如果要使用基本数据类型则需要使用对应的包装类类型
2 泛型类的概念
在定义类的同时定义了泛型变量的类。
泛型类的定义格式
class 类名<T>{
// 在该类中可以将泛型变量T当成一种数据类型使用。
}
泛型类的注意事项
1. 泛型类泛型变量的具体数据类型是在创建该类对象时由创建者指定。
2. 如果创建泛型类对象时没有指定泛型变量的具体数据类型,则默认是Object
3. 静态方法不能使用类上定义的泛型变量,如果该方法中要使用泛型变量,则需要将该定义为泛型方法。
3 泛型接口的概念
在定义接口的同时定义了泛型变量的接口
泛型接口的定义格式
interface 接口名<T>{
// 可以将泛型变量T当成一种数据类型使用
}
泛型接口的实现方式
方式1:实现接口的同时指定泛型变量的具体数据类型。(不够灵活)
方式2:实现接口的时不指定泛型变量的具体数据类型,那么此时需要将该实现类定义为泛型类,由使用者创建实现类对象时指定泛型变量的数据类型。(推荐使用)
4 泛型上下限
泛型上下限格式
泛型的上限:
格式: <? extends 类 >
意义: 只能接收该类型及其子类
泛型的下限:
格式: <? super 类 >
意义: 只能接收该类型及其父类型
注意事项? :
1.泛型通配符,可以匹配任意类型的数据。
2.? 一般不会单独使用,一般会结合泛型的上下限使用。
3.? 不能用来定义泛型方法,泛型类,泛型接口
4.? 不能在方法体中当成一种数据类型使用