一篇文章带你搞定为什么在 Java 中要使用泛型?

如果我们想设计一个表示坐标点的类,坐标由 X 和 Y 组成,那么坐标的表示方法则可以是整型,小数或者字符串。

此时我们需要设计一个表示坐标点的类 Point,这个类中有两个属性表示 X坐标和Y坐标,但是x,y中所保存的数据类型会有三种,而想要使用一个类型同时接收3种类型数据,则只能使用Object,因为Object类可以接收任何类型的数据,都会发生向上转型操作
在这里插入图片描述
设计思路:
在这里插入图片描述
设计 Point 类:

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;
    }
}

此时定义 Point 属性时使用了 Object 类型,则输入的数据可以是任意的类型。

public class Test{
    public static void main(String[] args) {
        Point p = new Point();
        p.setX(10);//利用自动装箱操作:int --> Integer --> Object
        p.setY("ten");//string --> Object
        int x  = (Integer)p.getX();//取出数据
        int y = (Integer)p.getY();//取出数据,会出现类型转换错误
        System.out.println("整数表示,x 坐标为:" + x);
        System.out.println("整数表示,y 坐标为:" + y);
    }
}

在这里插入图片描述
此时程序虽然可以正常的编译成功,但是程序运行时却发生了错误,因为设置的 String 类型无法向 Integer 类型转换,之所以造成这样的问题是因为 Point 类中的属性使用 Object 类型进行接收,造成了类型安全问题,因此需要用到下面的泛型技术。

泛型可以解决数据类型的安全性问题,主要原理是在类声明时通过一个标识标识类中某个属性的类型或者是某个方法的返回值及参数类型

这样在类声明或实例化时只要指定好需要的类型即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值