版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
作者:顏廷吉《Java代碼與架構(gòu)之完美優(yōu)化——實(shí)戰(zhàn)經(jīng)典》第三章代碼質(zhì)量優(yōu)化通用準(zhǔn)則溫馨提示——如何攻破泛型技術(shù)的重點(diǎn)與難點(diǎn)?(9/22)溫馨提示(1/5)■溫馨提示——如何攻破泛型技術(shù)的重點(diǎn)與難點(diǎn)?
泛型技術(shù)是我們成為架構(gòu)師必備的重要技能之一,而學(xué)好這門技術(shù)并非易事,下文對(duì)其重點(diǎn)與難點(diǎn)進(jìn)行了總結(jié),需要我們好好品味。溫馨提示(2/5)1.要明確運(yùn)行時(shí)進(jìn)行的類型檢查,不同類型的泛型類是等價(jià)的(Company<Integer>與Company<Employee>是屬于同一個(gè)類型Company)。2.泛型只適用于對(duì)象,不適用于基本類型??梢允褂没绢愋偷淖詣?dòng)裝箱類型來實(shí)現(xiàn)。3.在static方法中不可以使用泛型,泛型變量也不可以用static關(guān)鍵字來修飾。4.泛型常用符號(hào)含義——T(Type)、K(Key)、V(Value)、E(Element),雖然這幾個(gè)字母可以用作為變量的字符(如A、a、hello、中國)來代替,但是習(xí)慣上我們還是要用這幾個(gè)有意義的簡單明確的字母。5.協(xié)變的(convariant)——在編譯期間不能進(jìn)行類型匹配檢查的。例如數(shù)組與代碼2中所示例的列表。對(duì)于數(shù)組,舉例來說,實(shí)例代碼編譯是通過的,但運(yùn)行時(shí)會(huì)出錯(cuò)。協(xié)變性是Sun最初Java技術(shù)設(shè)計(jì)的一個(gè)缺陷。因?yàn)樵谧畛踉O(shè)計(jì)的時(shí)候沒有考慮泛型,在Java5之后才引入,這一技術(shù)突破被Sun稱之為革命性的革新之一。溫馨提示(3/5)6.不可變的(invariant)——在編譯期間能進(jìn)行類型匹配檢查的。也就是說對(duì)于任意兩個(gè)不同的類型Type1和Type2,List<Type1>既不是List<Type2>的子類型,也不是List<Type2>的超類型。因此使用帶有泛型的集合比使用數(shù)組有很多優(yōu)點(diǎn),其之間的優(yōu)劣比較如下表。區(qū)別點(diǎn)泛型集合數(shù)組類型安全√×不可協(xié)變√×可容納基本類型×√溫馨提示(4/5)7.通配符——“?”,即用問號(hào)表示類型參數(shù),是一種表示未知類型的類型約束方法。通配符在類型系統(tǒng)中具有重要的意義,它們?yōu)橐粋€(gè)泛型類所指定的類型集合提供了一個(gè)有用的類型范圍。通配符在類型系統(tǒng)中的作用來自其不會(huì)發(fā)生協(xié)變(covariant)這一特性。通配符類型List<?>與參數(shù)類型List<T>、具體類型List<Object>及原始類型List都不相同:List<?>通配符類型,如果說變量x具有List<?>類型,這表示存在一些T類型,其中x是List<T>類型,盡管我們不知道其元素的具體類型,但是知道x具有某種限制,且有相同的結(jié)構(gòu)。溫馨提示(5/5)參數(shù)類型List<T>,是確定的某一類型,具體在運(yùn)行期決定,是泛型中常用的形式。具體類型List<Object>表示我們明確地知道它能包含任何對(duì)象。對(duì)泛型類ArrayList而言,ArrayList<?>類型是ArrayList<T>的超類型(類似于原始類型ArrayList和根類型Object的關(guān)系)。原始類型List是協(xié)變的,我們不能對(duì)其元素有任何類型限制。能用List<Object>的地方,都可以用List<T>,而且List<T>是標(biāo)準(zhǔn)的泛型使用方式,在架構(gòu)或者編程時(shí),盡量用List<T>。List<?>是只讀類型,一般的業(yè)務(wù)編程中用的不多,在架構(gòu)設(shè)計(jì)時(shí)用的比較多,具體使用例子可參考優(yōu)化技巧24(封裝向下轉(zhuǎn)型,第209頁)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術(shù)學(xué)校供配電工程合同
- 臨時(shí)供熱施工合同范本
- 珠寶首飾店?duì)I業(yè)員聘用協(xié)議
- 垃圾處理場頂管施工合同
- 跨行業(yè)合同管理策略
- 校園十佳歌手活動(dòng)
- 考場作文應(yīng)急策略
- 標(biāo)本兼治中藥之病
- 護(hù)理Qc及管理工具
- 《供熱工程》課件
- 江蘇省某高速公路結(jié)構(gòu)物臺(tái)背回填監(jiān)理細(xì)則
- 電大護(hù)理本科臨床實(shí)習(xí)手冊內(nèi)容(原表)
- 當(dāng)代德國學(xué)校勞動(dòng)教育課程構(gòu)建的經(jīng)驗(yàn)與啟示共3篇
- “小金庫”治理與防范 習(xí)題及答案
- 王偉核桃經(jīng)濟(jì)價(jià)值及加工利用
- 新生兒胎糞吸入綜合征臨床路徑標(biāo)準(zhǔn)住院流程及路徑表單
- 氯化鈉特性表
- 鉆井井架起升鋼絲繩管理臺(tái)賬
- 單片機(jī)原理與應(yīng)用說課
- 船舶租賃盡職調(diào)查
- GB/T 13912-2020金屬覆蓋層鋼鐵制件熱浸鍍鋅層技術(shù)要求及試驗(yàn)方法
評(píng)論
0/150
提交評(píng)論