Java泛型简单了解

泛型


@Author:云都小生


为什么要使用泛型



Java的泛型提供了一种编译时类型检测机制,允许程序在运行时检测到非法的类型。这句话可能你看不懂,没关系,我引用许多相关文章中都会出现的一个例子。

import java.util.*;

public class GenericTest {

    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("qqyumidi");
        list.add("corn");
        list.add(100);

        for (int i = 0; i < list.size(); i++) {
            String name = (String) list.get(i); // 1
            System.out.println("name:" + name);
        }
    }
}

在程序中,我们在List中存放两个String和一个Integer的数据,这是可以的,因为List可接受的数据类型是Object。当程序第三次执行到//1时。 get到最后一个数就会出错,因为前面的括号进行强制转换,把Integer类型转换成String类型。这种错误是很难排除的,因为在编译过程并不会出错,只有程序运行起来才会出错。

在Java中,我们可以使用泛型,可以很好的避免这种异常。使用泛型,可以直接限定List集合中只能含有String类型的元素,这样我们就不需要强制转换了。在编译的过程中,如果我们想往已经限定是String的集合中存放Interger,在编译过程中就会出错。

import java.util.*;

public class GenericTest {

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("qqyumidi");
        list.add("corn");
        list.add(100);  //1

        for (int i = 0; i < list.size(); i++) {
            String name = (String) list.get(i);
            System.out.println("name:" + name);
        }
    }
}

这样一来,编译之前在//1的位置就会报错,这就是泛型的好处。


泛型类



如果想了解泛型背后的基本原理,我们就需要通过自己定义的一个泛型类来看看。当然,泛型还有更深层的原理。

public class Test {  
    public static void main(String[] args) {    
        Typx<String> t1 = new Typx<String>();
        t1.Typx("100");
        t1.printData();

        Typx<Integer> t2 = new Typx<Integer>();
        t2.Typx(100);
        t2.printData();
    }
}

public class Typx<T> {
    private T data;

    void Typx(T data)
    {
        this.data = data;
    }


    public void printData()
    {
        System.out.println(data);
    }
}

我们定义了一个Typx类,给了一个泛型形参(Typx类名后面)T。在创建对象的时候,我们给该对象传入了具体的实参。我们一般使用T、E、K、V来表示泛型形参。


记住一点,泛型就是用来限定,我们每次能传入的是什么类型的数据。目的就是为了在编译之前能够检查,防止在程序运行过程中会出错。

以上,便是泛型的简单了解和简单运用。

2017/9/18 11:46:03 @Author:Cloudking

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值