天天看點

黑馬程式員——高新技術之 泛型

                                        ------- 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/