泛型问题引出

在JDK1.5中泛型是一件重要的实现技术,它可以帮助我们解决程序的参数转换问题


泛型问题引出

现在假设需要你定义一个描述坐标的程序类Point类,而这个坐标类中需要提供有两个坐标属性:x、y,

对于这两个属性的内容可能有如下的几种选择:

 ·x=10、y=20;

·x=10.1、y=20.2;

·x=东京70度、y=北纬20度

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

·int自动装箱为Integer,Integer自动向上转型为Object;

·double自动装箱为Double,Double自动向上转型为Object;

·String向上转型为Object.


范例:定义Point类   

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 static void main(String[] args) {
		//第一步:设置数据
		Point p=new Point();
        p.setX(10);
        p.setY(20);
        //取出数据
        int x=(Integer)p.getX();
        int y=(Integer)p.getY();
        System.out.println("x="+x+"  y="+y);
        
	}

  范例:设置字符串

Point p=new Point();
        p.setX("东京20度");
        p.setY("北纬40度 ");
        //取出数据
        String x=(String)p.getX();
        String y=(String)p.getY();
        System.out.println("x="+x+"  y="+y);

这一切看起来已经彻底解决问题,但是现在解决问题的关键是Object,于是问题也即将出现在Object上。

范例:观察程序的问题

//第一步:设置数据
	Point p=new Point();
        p.setX(10.2);
        p.setY("北纬40度 ");
        //取出数据
        String x=(String)p.getX();//接收方
        String y=(String)p.getY();

这个时候由于设置方的错误,将坐标的内容设置为了double和String,

但是接收方不知道,他认为还是String,

所以当程序一旦执行之后就将出现如下的错误提示: java.lang.ClassCastException

 ClassCastException指的是两个没有关系的对象进行强制转换所带来的异常,

那么这个时候语法并不会对其进行任何的限制,但是执行的时候出现了程序错误,

所以得出了一个结论:向下转型是不安全的操作,会带来隐患。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值