java學習筆記之泛型

泛型


    在類(接口)定義的時候,還不能明確具體的類型。
    在使用的時候才明確類型,這個叫做泛型。
    泛型只能是引用類型,如果需要使用到基本數據類型,實際要用到的是包裝類型。
    int--->Integer char--->Character double--->Double short--->Short long--->Long byte--->byte 
    如 1.toString() 不能通過,而Integer.toString(1)可以。
    Integer b=10; 反編譯查看是Integer b=Integer.valueOf(10);這叫自動裝箱


    
泛型類


單個參數的泛型類
class 類名<泛型類型>{

}

多個參數的泛型類型
class 類名<泛型類型1,泛型類型2>{

}

class Person<M,N>{ }

泛型類繼承的時候:
    1.在繼承的時候就指明瞭泛型類型
    class Chinese extends Person<String,Integer>{ }
    2.在繼承的時候不指名泛型類型
    class Chinese<M,N> extends Person<M,N>{ }
        在實例化的時候才指明泛型類型。
        Chinese<String,Integer> chinese=new Chinese<String,Integer>();
    方法2更實用。

 

泛型接口


語法:
interface 接口名<T> {}
interface 接口名<M,N> {}
實現語法:
1.class 類名 implements 接口名<具體的泛型類型>{}
2.class 類名<T> implements 接口名<T> {}
等到具體實例化的時候再指定泛型類型

 

泛型方法


語法:public <T> void 方法名(T t){

}
使用泛型方法,可以將類型的指定放在方法調用的時候。

泛型的限制
class 類名<T extends Car>{
}
    這裏T必須是Car或其子類

    
泛型通配符


?代表通配符,可以是任意類型
    List<? extends Car> list3=new ArrayList<Car>();
? extends Car:代表此泛型類型必須是Car或其子類

    List<? super Phoenix> list=new ArrayList<Bike>();
? super Phoenix:代表此泛型類型必須是Phoenix或其父類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章