java泛型
这里对java泛型做下小结:
为什么会有泛型?
在不使用泛型时,往集合中添加对象可以添加不同类型的对象,在遍历集合时往往是将集合中的元素以同一类型取出,这时集合中的不是该类型的元素就会发生运行时的类型转换错误,而使用泛型后,往集合中添加不是该类型的元素时
在编译期就会报错,从而减少了运行时错误
泛型在jdk1.5出现
什么是泛型?
所谓泛型其实就是一种对集合的编译期类型检查,也正是因为泛型是编译期行为,因此使用反射可以绕过泛型从而向集合中添加不同类型的元素
泛型写法?
泛型中是没有多态的概念的下面这种写法是错误的:
List<Object> list = new ArrayList<String>();
下面的写法是规范写法
List<String> list = new ArrayList<String>();
下面两种编译可以通过,但是不推荐这样写
List list = new ArrayList<String>();
List<String> list = new ArrayList();
泛型的用途?
泛型的用途十分广泛,多用于自定义泛型接口等,自定义泛型中的标识可以理解为一个类型占位符
泛型方法:
如图,泛型方法的定义方式是在方法返回类型前面声明自定义泛型,这个方法可以实现传入什么类型的参数就返回什么类型的对象
泛型类:
如图,泛型类的定义是在类名后面声明自定义泛型
如图,泛型类的实际类型是在创建该类的对象时指明
泛型接口:
如图,泛型接口的实际类型是在该接口名后面声明自定义泛型
如图,泛型接口的实际类型可以在其子类实现该接口时指明
如图,也可以实现它的子类先不指定,在实例化其子类对象时指定泛型类型