Java的泛型的深入的理解

今天我们来说说Java的泛型,所谓的泛型就是定义安全的数据类型,我们来看看下面的例子.首先我们来看看没有使用泛型的例子。

来看看下面的代码.

package test.DrawFrame;

/**
 * @author hackbase   Java的泛型的处理
 */
public class TestDemo1 {
    Object over;

    public static void main(String[] args) {
        TestDemo1 t1 = new TestDemo1();
        TestDemo1 t2 = new TestDemo1();

        t1.setOver(true);
        t2.setOver(12.34);


        boolean d1 = (boolean) t1.getOver();
        double f2 = (double) t2.getOver();

        System.out.println(d1);
        System.out.println(f2);

        int i = (int) t2.getOver();
        System.out.println(i);


    }

    public Object getOver() {
        return over;
    }

    public void setOver(Object over) {
        this.over = over;
    }
}

在上面的代码,我们可以看到,当我们没有使用泛型的时候,必须使用强制类型转换才能实现.并且两边的数据类型必须时一致的

要不,就会出现错误,例如下面的代码.

    //创建浮点类型的对象
     t2.setOver(12.34);
   //这里必须使用强制转换才行,而且必须时Double才行.
  double f2 = (double) t2.getOver();

编译器就会抛出类型转换异常的错误.假如我们将这里的Double改变成为了Int类型的时候,编译器就会抛出类型转换错误的异常,因为我们我们传入的 时一个浮点数据,jvm自动转换为浮点类型的对象。浮点类型的对象不能转换为整数类型的。因此这里会报错.

为了定义更加安全的数据类型,我们使用的泛型来进行定义的。我们来看看泛型如何定义,泛型的定义非常的简单,就是在类名的后面加上一对尖括号。中间协商泛型的名字,那么所有的属性就会被定义成为该类型,当我们在初始化的时候在指定其正确的类型即可.来看看下面的代码.

package test.DrawFrame;

/**
 * @author hackbase   Java的范型的理解
 * 在这里我们给成员属性定义了泛型.
 */
public class TestDemo2<T> {
    T over;

    public static void main(String[] args) {
        TestDemo2<Boolean> d1 = new TestDemo2();
        d1.setOver(true);
        boolean b1 = d1.getOver();
        System.out.println(b1);


        TestDemo2<Integer> d3 = new TestDemo2<>();
        d3.setOver(123);
        int d4 = d3.getOver();
        System.out.println(d4);
    }

    //添加get  set方法。
    public T getOver() {
        return over;
    }

    public void setOver(T over) {
        this.over = over;
    }

}

在这里,我们看到的 就是我们的over类型被指定为Boolean以及Integer类型。那么将该类型进行拆箱操作的时候,那么左边的就会只能时整数的类型,不能定义其他的基本的数据类型,否则编译器就会报错.因为也是无法定义的。

其次要注意的就是,我们可以在尖括号后面写多个泛型,并且泛型不能时一个常见的数据类型,以及泛型通常时大写的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值