java泛型,其实就是数据类型参数化。使用的时候就是把数据类型当参数。根据这个参数进行指定的操作。
java中泛型是在jdk1.5之后出了。所以为了兼容低版本,所以这个泛型是假的,意思是底层实现的时候,泛型会被擦除,替换成object或者做了限制的数据类型。
java泛型好处一:
提高复用性。适用于多种数据类型,执行相同的代码。
好处二:
提前编译错误报错。在编码的时候可以指定数据类型,方便后面使用,不需要强制类型转换,提前把错误报出来。
好处三:
搭建框架做限制使用。如T extends XXX;这种形式。
泛型的使用:
泛型类、泛型接口、泛型方法。
三种定义方式:
//泛型类
public class Bean<T>{}
//泛型接口
interface IBean<T>{}
//泛型方法
public <T> void methodText(T t){}
泛型上界和下界(extends super)
//泛型类
public class Bean<T extends ArrayList>{}
//泛型接口
interface IBean<T extends ArrayList>{}
//泛型方法
public <T extends ArrayList> void methodText(T t){}
//泛型类
public class Bean<? super ArrayList>{}
//泛型接口
interface IBean<? super ArrayList>{}
//通配符下限
private static void grenericitySuper(List<? super Integer> t){
}
这个界限不只是界限,还有一些副作用。使用extends的不能set对象,使用super的不能get对象。
一般在写框架的时候用到的比较多。