Java泛型:
为什么使用泛型:
在Java中增加泛型之前,泛型程序设计是使用继承来实现的,其实在集合中添加的都是Object类的对象。但这样做的话还是有一些坏处的。
坏处:
1、需要强制类型转换(例如:把一个Object类型转换为字符串类型或者其他类型)。
2、可以向集合中添加任意类型的对象,存在风险。(例如:把一个Cat对象强制转换为String类型,虽然在编译阶段没有错误,但是在运行阶段会出现运行时异常,所以这样的结果是存在一定风险的)。
注: 使用泛型以后就能解决这样的一些问题。
泛型的正确使用:
List <String> list = new ArrayList<String>();
定义集合对象的时候把泛型写在一对<>里,例如上面定义了一个List对象,List<>里写上字符串,限制在List当中只能添加字符串的内容,然后在ArrayList这个类的后面也要有一个<>并写上String。
当然,在Java SE7及以后的版本中,构造方法当中是可以省略泛型类型的。(如下代码)
List <String> list = new ArrayList<>();//此时ArrayList的<>里什么都不用写
多态与泛型:
相关代码如下:
//定义一个Animal类
class Animal{}
//定义一个Cat类继承Animal类
class Cat extends Animal{}
//第三行代码这里Animal是父类,Cat是子类。这是错误的写法!是不允许的!)
List <Animal> list = new ArrayList <Cat>();
注:正确写法应该是变量声明的类型必须匹配传递给实际对象的类型,所以尖括号里必须是一致的。
其他错误写法(如下):
//1、
List <Object> list = new ArrayList<String>();
//2、
List <Number> numbers = new ArrayList<Integer>();