代碼與架構(gòu)之完美優(yōu)化實(shí)戰(zhàn)典配套課件三章溫馨提示_第1頁
代碼與架構(gòu)之完美優(yōu)化實(shí)戰(zhàn)典配套課件三章溫馨提示_第2頁
代碼與架構(gòu)之完美優(yōu)化實(shí)戰(zhàn)典配套課件三章溫馨提示_第3頁
代碼與架構(gòu)之完美優(yōu)化實(shí)戰(zhàn)典配套課件三章溫馨提示_第4頁
代碼與架構(gòu)之完美優(yōu)化實(shí)戰(zhàn)典配套課件三章溫馨提示_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論