什么是泛型
对象建立时不指定类中属性的具体类型,而由外部在声明及实例化对象时指定具体类型;
为什么使用泛型
Object类是一切数据类型的父类,可以接收任何类型的数据,都会发生向上转型操作。
class Point{
private Object x ; // 表示X坐标
private Object y ; // 表示Y坐标
public void setX(Object x){
this.x = x ;
}
public void setY(Object y){
this.y = y ;
}
public Object getX(){
return this.x ;
}
public Object getY(){
return this.y ;
}
};
public class GenericsDemo04{
public static void main(String args[]){
Point p = new Point() ; // 声明一个Point的对象
p.setX(10) ; // 利用自动装箱操作:int --> Integer --> Object
p.setY("北纬210度") ; // String --> Object
int x = (Integer)p.getX() ; // 取出数据先变为Integer,之后自动拆箱
int y = (Integer)p.getY() ; // 取出数据先变为Integer,之后自动拆箱
System.out.println("整数表示,X坐标为:" + x) ;
System.out.println("整数表示,Y坐标为:" + y) ;
}
};
代码中x,会自动发生装箱操作,并向上转型为Object类型,同理y也是。但是在拆箱的时候,y出现类型转换错误。
一方面拆箱装箱消耗性能。另一方面它不会再编译时出错,而是在运行时,因此不安全。
泛型的应用
解决数据类型的安全性问题。在类声明时通过一个标识表示类中某个属性的类型或者某个方法的返回值及参数类型。在实例化时指定具体类型即可。
它会将类型错误发现在编译时。