包装类
因为在java中基本类型(int char...)不是继承值Object类,为了满足泛型的需要,于是给每种基本类型都设计了对应的包装类
基本类型 | 包装类 |
int | Integer |
char | Character |
byte | Byte |
Short | Short |
float | Float |
double | Double |
long | Long |
boolean | Boolean |
包装类的使用
装箱和拆箱
装箱就是创建一个Integer类并吧一个int类型的值赋给这个新创建的类
拆箱正好相反,将Integer类使用intValue这个方法去将值赋给一个int类型
当然这样写比较麻烦 那么可以采用自动拆箱的自动装箱
这样写更加的方便
泛型
适用于多种类型,将数据类型实现了参数化
因为Object是所有类的父类,那么我们就可以写出这样的代码
一个Object的数组可以储存所有类型的数据,但是这样储存就会显得比较乱,不知道这个数组储存的是个什么类型的数据,在大多数的情况下我们都是只是想这个数组储存的时同一个类型的数据,
所以泛型的作用就是让编译器对我们传入的数据进行类型检查,让这个数组只储存我们最初规定的类型
语法
数据类型必须是类
对于刚刚那个储存数据的代码就可以写成
这样就可以使一个类储存多种类型的数据
对于<>中的T可以理解为占位符,代表的值是你在实例化对象的时候传入的类型,注意类型不能是基本类型
类的上界
对于有些时候我们需要对传入的类型进行约束,可以通过类型边界进行约束
而不是Number的子类就不能被传入
因为他向上到父类为Number,所以这使Number就是这个泛型的上界
泛型静态方法
当然也可以直接调用,编译器会自动进行类型推导
END hhh