【泛型】一、为什么需要泛型

假设需要你定义一个描述坐标的程序类Point,需要提供两个属性x、y。对于这两个属性的内容可能有如下选择:

  1. x = 10、y = 20 ;
  2. x = 10.1、y = 20.1 ;
  3. x = 东经80度、y = 北纬20度

那么现在首先要解决的问题就是Point类中的x、y的属性类型问题,此时需要保存的有int、double、String,所以
在java中只有一种类型可以保存所有类型:Object型。

/*
为什么需要泛型类
 */
package genericityClass;

class Point{
    private Object x;
    private Object y;

    public Object getX() {
        return x;
    }

    public void setX(Object x) {
        this.x = x;
    }

    public Object getY() {
        return y;
    }

    public void setY(Object y) {
        this.y = y;
    }
}
public class Test1 {
    public static void main(String[] args) {
        Point point1 = new Point();
        point1.setX(10);
        point1.setY(20.1);//如果类型不小心写错,编译不会报错,所以就产生了安全遗患(存在于强转)
        //所以此时需要泛型类的加入!
        int x = (int) point1.getX();//返回值为Object需要强转成int(向下转型 )
        int y = (int) point1.getY();
        System.out.println("x="+x);
        System.out.println("y="+y);
    }
}

这个时候由于设置方的错误,将坐标内容设置成了double与String,但是接收方不知道,于是在执行时就会出现
ClassCastException 。 ClassCastException 指的是两个没有关系的对象进行强转出现的异常。
这个时候语法不会对其做任何限制,但执行的时候出现了程序错误,所以得出结论:向下转型是不安全的操作,会带来隐患。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我顶得了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值