在我初學java的時候泛型我是沒咋看的,直到後面做了安卓開發後才回過頭來了解泛型。後來才漸漸體會到泛型的作用。至于可變參數,我現在才清楚,以前瞄過一眼,但是真的隻是一眼。?
泛型
什麼是泛型?
在建立對象的時候明确元素的資料類型的技術叫做泛型。泛型是一種特殊的類型,是一種把類型明确的工作推遲到建立對象或者調用方法的時候才去明确的特殊類型。----參數化類型(把類型當做參數傳遞)
格式 : <資料類型> —這裡的資料類型隻能是引用類型。
為什麼使用泛型?
早期的Object類型可以接收任意的對象類型,但是在實際的使用中,會有類型轉換的問題。也就存在這隐患,是以Java提供了泛型來解決這個安全問題。JDK1.5版本後出現。
優勢:
- 把運作期間的問題提前到編譯期間
- 避免了強制類型轉換
- 優化了程式設計,解決了黃色警告線
泛型應用:
類 接口 抽象類 就需要使用泛型,一般來說在集合類中用的最多。
- 泛型類
- 把泛型定義在類上
- 格式:public class 類名<泛型類型1,…>
- 注意:泛型類型必須是引用類型
- 泛型方法
- 把泛型定義在方法上
- 格式:public <泛型類型> 傳回類型 方法名(泛型類型 t)
- 泛型接口
- 把泛型定義在接口上
- 格式:public interface 接口名<泛型類型1…>
泛型進階
泛型如果明确的寫的時候,前後必須一緻。?表示任意類型
- 泛型通配符<?>
任意類型,如果沒有明确,那麼就是Object以及任意的Java類了
- ? extends E
向下限定,E及其子類
- ? super E
向上限定,E及其父類
可變參數
定義方法的時候不知道該定義多少個參數
- 格式
- 修飾符 傳回值類型 方法名(資料類型… 變量名){}
- 注意:
- 這裡的變量其實是一個數組
- 如果一個方法有可變參數,并且有多個參數,那麼,可變參數肯定是最後一個 (int b,int… a) b接收一個參數,其他的由a接收成數組格式。
- Arrays工具類中的一個方法
- public static List asList(T… a)