------- android教育訓練、java教育訓練、期待與您交流! ----------
1、 為了解決類型安全的集合問題引入了泛型。泛型是一個編譯時文法。
2、 List<String> l = new ArrayList<String>();
<String>:表示該集合中隻能存放String類型對象。
3、 使用了泛型技術的集合在編譯時會有類型檢查,不再需要強制類型轉換。String str = l.get(2);
注:一個集合所允許的類型就是這個泛型的類型或這個泛型的子類型。
4、 List<Object> l = new ArrayList<Integer>×
必須類型一緻,泛型沒有多态
5、 泛型的通配符<?>
泛型的通配符表示該集合可以存放任意類型的對象。
static void print( Cllection<?> c ){
for( Object o : c )
out.println(o);
}
6、 帶範圍的泛型通配符
(1)、向下比對:<? extends Number>
表示該集合元素可以為Number類型及其子類型(包括接口)
(2)、向上比對:<? super Number>
表示該集合元素可以為Number類型及其父類型
7、 泛型方法
在傳回值與修飾符之間可以定義一個泛型方法
public static <T,E extends T> void copy (T[] array,Stack<E> sta){…..}
8、 不能使用泛型的情況:
(1)、泛型不能用于線程
(2)、不能用泛型來new一個對象
如:T t = new T();
(3)、靜态方法不能使用類的泛型。
9、 在使用接口的時候指明泛型。
class Student implements Comparable<Student>{.......}
注意:在對泛型類型進行參數化時,類型參數的執行個體必須是引用類型,不能是基本類型。當一個變量被聲明為泛型時,
隻能被執行個體變量、方法和内部類調用,而不能被靜态變量和靜态方法調用。因為靜态成員是被所有參數化的類所共享的,
是以靜态成員不應該有類級别的類型參數。
------- android教育訓練、java教育訓練、期待與您交流! ----------
詳細請檢視:http://edu.csdn.net/heima/