泛型 前世今生

2021-09-23 19:21:32 字數 2271 閱讀 7553

泛型:任意的型別。是一種把明確資料型別的工作放在了建立物件或者呼叫方法時候進行的特殊的型別,一般只應用在集合裡。

泛型的格式:《資料型別》,舉例如下:

arraylistarray = new arraylist();

為什麼有泛型:我們知道,陣列只能儲存一種資料型別;集合可以儲存任意型別的物件,但是我只想讓我的儲存一種型別,不想讓其他型別存進去,怎麼解決呢?

這時候就要用泛型了,泛型就是模仿陣列限定存入資料型別而來的,在定義集合的時候,告訴集合,限定集合只能儲存什麼型別的元素(如果不明確指定則預設是object型別)。以上面泛型舉例,arraylistarray = new arraylist();就是限定集合array只能存入string型別資料。

泛型的好處:

(1)解決了虛擬機器黃色警告問題,因為如果不加泛型的話,虛擬機會認為存在因操作失誤存入非正常資料的可能,而報出黃色警告。

(2)把執行期間的型別轉換異常提前到了編譯期間,定義泛型之後,如果存入非泛型規定型別資料,虛擬機會報錯而導致編譯不通過。

(3)優化程式設計,使得**更清晰。

如果類或者介面後面有 < > ,那麼這就是泛型的體現。它就是要你在使用的時候明確型別,這時候就可以使用泛型了。

泛型一般的用法有泛型類、泛型方法、泛型介面。

顧名思義,泛型類就是把泛型定義在類上。舉例如下:

public class tool2

}

定義成這樣,說明方法傳遞的引數必須和泛型類的型別一致,這時候,泛型類的使用方法如下:

public class tool2test 

}

從上邊可以知道,我們用泛型類可以使得泛型類的方法傳遞不同型別的引數(上面分別傳遞了string和integer型別),但是我們需要在泛型類和其方法上都加上泛型。那麼,我們能不能在呼叫方法的時候,才去明確型別呢?

這就用到了泛型方法,泛型方法就是把泛型加在方法上。舉例如下:

public class tool 

}

使用的時候:

public class tooltest 

}

把泛型加在介面上。泛型介面有什麼特點呢?

首先定義乙個泛型介面:

//定義泛型介面

public inte***ce inter

定義類實現這個介面:

(1)在寫實現類的時候,已經知道介面上應該是什麼型別了,例如應該是string型別:

//直接加上型別string

public class interimpl implements inter

}

呼叫方式:

public class intertest 

}

(2)在寫實現類的時候,不知道介面上應該是什麼型別:

public class interimplimplements inter
呼叫方式:

public class intertest 

}

小結:泛型屬於新特性,是高新類技術,在很多方面多有用處。既可以規定必須用哪種型別,又可以代替方法過載,傳遞多種引數。

LinkedList前世今生

1 linkedlist元素在內部儲存的實現,節點定義即指向前一元素的指標,後一元素的指標,當前元素的值。private static class entry 2 建立乙個空鍊錶。預設有個頭指標header。private transient entryheader new entry null,n...

前世今生 STL

嘛,string就是乙個用於字串處理的標準類庫,但是需要注意的是其速度可能會比直接操縱char陣列要慢一些。reverse這個方法是我一直都想找到但是沒有找到的,在判斷回文的時候格外好用。string s abcdef string ss s ss abcdef reverse ss.begin s...

位址 前世今生

alu arithemetic and logic unit 書面意思是 算術與邏輯部件,運算器,算術與邏輯單元,通俗來講 cpu處理的資料位數。從4位 8位 16位 32位,處理能力越來越強。發問 16位計算能力如何處理20位的位址呢?cs ip 是一組暫存器,用於告知 cpu 當前將要讀取的彙編...