Java泛型的本质就是参数化类型。
使用泛型的好处
1.编译器在编译期就会做类型检查,告知是否插入了错误类型的对象,使得程序更加安全,增强了程序的健壮性。
2.消除源代码中的许多强制类型转换,这使得代码更加可读,并且减少了出错机会。
3.泛型变量固定了类型,使用的时候就已经知道是值类型还是引用类型,避免了不必要的装箱、拆箱操作,提高了程序的性能。
4.提高了代码的重用性。
泛型的使用有以下几种
1.泛型方法<T>
1. public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
2.只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
3.<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
4.与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E等形式的参数常用于表示泛型。
2.泛型类
3.泛型接口
4.通配符(上限和下限)
1.<?> --> 无边界的通配符 表示类型参数可以是任何类型
2.<? extends Number> -->固定上边界的通配符 2:表示类型参数必须是Number或者是Number的子类
3.<? super Number> --> 固定下边界的通配符 3: 表示类型参数必须是Number或者是Number的父类
泛型的实现原理
泛型本质是将数据类型参数化,它通过擦除的方式来实现,即编译器会在编译期间「擦除」泛型语法并相应的做出一些类型转换动作。