1.泛型是jdk1.5以后出现的,用于解决安全问题,是一个安全机制
2.好处是将运行时期的异常classCastException转移到了编译时期
3.在java中应用最广泛的地方就是集合
4.在java的api中有<E>和<t> 都是泛型 e代表element t代表type
5.什么时候使用泛型呢?当类中要操作的类型不确定,早期通过object来扩展,现在定义泛型,因为object要强转,麻烦
6.泛型类public class TreeSet<E>
泛型方法public <T> void show(T t)
静态泛型方法public static <T> void show(T t)
泛型接口:public interface Map<K,V>
7.缺点:不能使用子类特有的方法

public static void printIterator0(ArrayList<Integer> al) {  
      Iterator<Integer> it = al.iterator();  
        while(it.hasNext()) {
            Integer next = it.next();
            String string = next.toString();
            System.out.println(string);  
        }  
    } 
    /** 
     * 通配符方式。 
     * 缺点:不能使用对象中元素的特有方法了。 
     * */  
    public static void printIterator(ArrayList<?> al) {  
      Iterator<?> it = al.iterator();  
      while(it.hasNext()) {
        Object next = it.next();
          System.out.println(next);  
      } 
    }  

    /** 
     * 泛型方式 
     * 缺点:不能使用对象中元素的特有方法了。 
     * @param <T>
     * */  
    public static  <T> void printIterator2(ArrayList<T> al) {  
       Iterator<T> it = al.iterator();  
       while(it.hasNext()) {
        Object next = it.next();
           System.out.println(next);  
       } 
    }  

7.向上限定ArrayList<? super E>集合中只能存放E或者E的父类
8.向下限定ArrayList<? extends E>集合中只能存放E或者E的子类