关键词搜索

源码搜索 ×
×

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

发布2020-01-20浏览1076次

详情内容

如果我们想设计一个表示坐标点的类,坐标由 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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

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

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

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载