本帖最后由 bin2015 于 2015-5-30 18:04 编辑
泛型: 泛型是jdk1.5出现的新特性。
泛型的好处:
1. 可以把运行时出现的问题提前至编译时。
2. 避免了无谓的强制类型转换。
判断一下那种写法是正确的:
ArrayList<String> list = new ArrayList<String>(); true
ArrayList<Object> list = new ArrayList<String>(); false
ArrayList<String> list = new ArrayList<Object>(); false
为了新老系统的兼用性
ArrayList list = new ArrayList<String>(); true
ArrayList<String> list = new ArrayList(); true
使用泛型要注意的事项:
1. 泛型中没有多态的概念,左右两边的数据类型必须要一致,或者是只写一边的泛型。
推荐使用: 两边都写上同样数据类型的泛型。
自定义泛型:自定义泛型可以理解为是一个数据类型的变量或者是一个数据类型的占位符。
函数自定义泛型的格式:
修饰符 <声明自定义泛型> 返回值类型 函数名(形参列表 ...){
}
函数自定义泛型要注意的细节:
1. 函数上自定义泛型的具体数据类型是在调用该函数的时候,传递实参数据的时候确定具体的数据类型 的。
2. 自定义泛型使用的标识符可以自定义的,只要符合标识符的命名规则即可。但是一般自定义泛型使用的标识符都是单个字母而已。
泛型中是不能使用基本数据类型数据的,如果需要使用基本数据类型数据,那么就要使用基本数据类型对应 的包装类型
int -----> Integer
float---->Float
double --- Double
char -----> Character
boolean ---- Boolean
byte-----Byte
short ---Short
long ----- Long
自定义泛型类:
自定义泛型类的格式:
class 类名<自定义的泛型>{
}
泛型接口:
泛型接口的定义格式:
interface 接口名<声明自定义的泛型>{
}
泛型接口要注意的细节:
1. 接口上自定义泛型的具体数据类型是在实现该接口的时候确定 的。
2. 如果一个接口已经自定义了泛型,在实现该接口的时候没有指定自定义泛型的具体数据类型,那么默认为Object类型。
泛型类要注意的事项:
1. 类上声明的自定义泛型的具体数据类型是在使用该类创建对象 的时候确定的。
2. 如果一个类已经声明了自定义泛型,该类在创建对象的时候没有指定自定义泛型的具体数据类型,那么默认则为Object类型。
3. 静态的方法不能使用类上声明的自定义泛型,如果需要使用自定义泛型只能在自己方法上声明。
泛型的通配符:
? super Integer 泛型的下限 只能用于Integer或者是Integer的父类类型数据
? extends Number 泛型的上限 只能用于Number或者是Number的子类类型数据。
|
|