泛型的巧妙之处不仅如此。在Dimen对象实例化时,我们第一次使用的是Integer类型,那么对于这个对象来说它的各种属性、函数的泛型都变成了Integer,而当我们需要定义一个Double型的时候,我们只需要新实例化一个对象即可。
class Dimen<T>{
private T x;//向量的x坐标
private T y;//向量的y坐标
public void setX(T x){
this.x = x;
}
public void setY(T y){
this.y = y;
}
public T getX(){
return this.x;
}
public T getY(){
return this.y;
}
}
public class DimenTest{
public static void main(String[]args){
Dimen<Integer> dimen = new Dimen<Integer>();
//给成员变量赋值
dimen.setX(5);
dimen.setY(1);
//获取成员变量,由于getger的返回值类型是Object,所以需要使用向下转型
int x = dimen.getX();
int y = dimen.getY();
System.out.println("该向量为:" + x + "i" + "+" + y + "j");
Dimen<Double> dimen1 = new Dimen<Double>();
//给成员变量赋值
dimen1.setX(5.0);
dimen1.setY(1.5);
//获取成员变量,由于getger的返回值类型是Object,所以需要使用向下转型
double x1 = dimen1.getX();
double y1 = dimen1.getY();
System.out.println("该向量为:" + x1 + "i" + "+" + y1 + "j");
}
}
值得注意的是,在泛型类型的设置时,我们只能使用基本数据类型的包装类或字符串类,而不能使用基本数据类型。
在实际的开发当中,泛型的主要作用是防止使用者不按照我们规定的使用规则来进行操作而引起的错误或异常。
就像程序员吐槽会里面说的一样,我们只是一个肉夹馍摊点,你让我跟你一份火锅,自然就会出现了bug。泛型的出现,就是为了减少这种情况的出现。