Java泛型初识

一.泛型的使用举例:

import java.util.ArrayList;  
import java.util.Collection;  
import java.util.List;  
publicclass GernericTest {  
    publicstaticvoid main(String[] args) throws Exception{  
        List<Integer> listInteger =new ArrayList<Integer>();  
        List<String> listString =new ArrayList<String>();  
        printCollection(listInteger);  
        printCollection(listString);      
    }   
    publicstaticvoid printCollection(Collection<Object> collection){  
               for(Object obj:collection){  
            System.out.println(obj);  
        }    
    }  
}  

  这段代码中,会编译报错,由Collection<Object>引起。泛型的参数不考虑继承关系,或者直接说,不会自动向上转型。

  修正后:

    下面的方法直接改成:

public static void printCollection(Collection<?> collection){  
               for(Object obj:collection){  
                System.out.println(obj);  
           }    
    }  

  或者: 

 public static<E> void printCollection(Collection<E> collection){  
               for(E obj:collection){  
                System.out.println(obj);  
           }    
    }  

二.泛型的认识:

  1.自认为所谓的泛型即动态绑定类型,即java文件进行编译的时候动态的给定类型。泛型这概念在class文件中并不存在,因为已经是编译好的东东。

  2.泛型可以看成一个类型参数,这个类型参数需要在方法参数传入前,提前传入。(这个举例略)

三.泛型中?,E,T的认识:

  1.?是泛型中的统配符,E和T是类型参数的一个代表符号而已,也可以写成其他形式

  2.类型表示的看起来比较高级的形式,拿ArrayList来举栗子:

    ArrayList<? extends Father> list----------表示这个ArrayList中每个元素的类型是,Father及其Father的子类;

    ArrayList<? super Father> list-------------表示这个ArrayList中的每个元素的类型是,Father及其Father的父类;

以上是对泛型的一些初步认识。泛型的好处及技巧有待实践认识。

参考:http://blog.csdn.net/lonelyroamer/article/details/7864531

   http://blog.csdn.net/ikownyou/article/details/65630385

posted @ 2017-07-09 14:01  小飞vsKK  阅读(118)  评论(0)    收藏  举报