(); //錯
ArrayList list = new ArrayList ();               //行
ArrayList list = new ArrayList();               //行
注:使用泛型
        *  兩邊的類型必須一致
              ArrayList list = new ArrayList();
        *  兩邊只有一邊用泛型(為了保持兼容性)
              ArrayList list = new ArrayList ();
              ArrayList list = new ArrayList();
自定義泛形——泛型方法:
Java程序中的普通方法、構造方法和靜態方法中都可以使用泛型。方法使用泛形前,必須對泛形進行聲明,語法: ,T可以是任意字母,但通常必須要大寫。通常需放在方法的返回值聲明之前。例如:
public static  void method(T t);
注意:
只有對象類型才能作為泛型方法的實際參數。
在泛型中可以同時有多個類型,例如:編寫一個泛形方法,實現數組元素的交換。

編寫一個泛形方法,接收一個任意數組,并顛倒數組中的所有元素

如果一個類多處都要用到同一個泛型,這時可以把泛形定義在類上(即類級別的泛型),語法格式如下:
public class GenericDao {
private T field1;
public void save(T obj){}
public T getId(int id){}
}
注意
    *  在類級別上定義的泛型,只對類的非靜態成員有效
    *  靜態方法不能使用類定義的泛形,而應單獨定義泛形。
/*
 *  類級別泛型
 *  在類級別上定義的泛型,只對類的非靜態成員有效
 */
Public class DemoClass3{
Public void mathod1(T  t){
}
Public void mathod2(T  t){
}
//靜態方法不能使用類定義的泛型,而應單獨定義泛型
Public static  void method3(T  t){
}
}
泛形的典型應用:BaseDao
泛型的高級應用——通配符:
定義一個方法,接收一個集合,并打印出集合中的所有元素,如下所示:
void print (Collection c) {
           for (String e : c) {
                 System.out.println(e);
           }
} 
問題:該方法只能打印保存了String對象的集合,不能打印其它集合。通配符用于解決此類問題,方法的定義可改寫為如下形式:
void print (Collection c)  {            //Collection(發音為:"collection of unknown") 
for (Object  e : c) {
System.out.println(e);
}
}
此種形式下需要注意的是:由于print方法c參數的類型為Collection,即表示一種不確定的類型,因此在方法體內不能調用與類型相關的方法,例如add()方法。
       但可以調用與類型無關的方法,例如size()方法
總結:使用?通配符主要用于引用對象,使用了?通配符,就只能調對象與類型無關的方法,不能調用對象與類型有關的方法。

限定通配符的上邊界(?的類型必須是Number的子類)
限定通配符總是包括自己。
正確:Vector x = new Vector();
錯誤:Vector x = new Vector();
限定通配符的下邊界(?的類型必須是Integer的父類)
正確:Vector x = new Vector();
錯誤:Vector x = new Vector();
問題:以下代碼行不行?(如果是Byte類型不可以)
public void add(List list){
list.add(1000);
}
來自:http://blog.csdn.net/fengdongkun/article/details/8009230