【Java技术点滴】——Java中的泛型理解

基本理解

    泛型是我们在程序实现中经常使用的技术,对它的理解可归纳如下

    1.在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)

    2.在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在人们大多把这称作模板)不论使用哪个定义,泛型的参数在真正使用泛型时都必须做出指明。


    以上为百度百科中的两种定义,我们可以简单的理解为,一种类型的参数,作为一个占位符在类、方法里使用。也可以把它理解为一种在设计时未确定类型的类,也就是说这个类在我们的使用中是可变的,在调用时才能够真正的唯一确定。
    也许上面说的还是比较绕口,再直接点,简单认为就是一个在我们编写程序中的一种占位符,在调用时指定。
    泛型可以结合类、接口、方法等使用,分别成为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处是安全简单

对比

          泛型  VS  Object
     在Java SE 1.5之前,没有泛型的情况下,我们只能使用Object的引用来达到参数的“任意化”。对于强制类型转换错误的情况,编译器是不会提示错误的,只有在运行时抛出,这是一个安全隐患。
        需要注意的是基本类型不能使用泛型
     我们在类或方法或接口中使用“<T>”(或把T换成其他字母)这个符号以表示在该定义范围下T就表示一个类型持有者名称,我们可以使用T来表示方法返回类型、参数类型,或其内部的一个变量类型了。
     限制泛型: 上面我们讲到的T实际上没有加任何的显示,可以把它看成是Object类型,为了体现泛型的安全性,我们可以使用限制泛型,类似于<T extends Map >,这样我们在调用方指定T具体类型的时候就加上了“必须是实现Map接口的类”。也可以将T换为一种实际存在的类型String、Double、Boolean等来使用泛型,这样确定了类型,减小了灵活性,提高了安全性。
    注:extends表示继承或实现的含义
         
            T    VS    ?
        上面的介绍中,我们可以将T换为通配符?,这样表示通配符泛型,在调用时,我们可以更换类型

小结

     通过抽象,加上泛型的应用,可以提高我们程序的灵活性,提高程序代码的复用度,泛型应用也将随着经验的增加主键深刻。

         参考资料: http://baike.baidu.com/link?url=EOVW9ngssrjefN2jF-aB9alT-gSZa2YSez3PEGFp8cvQ3vvnfL0aBBKKmuhxsE5e2S_kYBGj5mwAt4V6XX0Px_

你可能感兴趣的:(【Java技术点滴】——Java中的泛型理解)