您的位置:網(wǎng)站首頁 > 優(yōu)秀論文 > 正文
Java型的研究與應(yīng)用-科技論文
作者:中州期刊聯(lián)盟來源:原創(chuàng)日期:2012-08-31人氣:1337
在Java編程中,經(jīng)常遇到眾多對象的存取情況,比如在一個新聞系統(tǒng)中(假定新聞類為News),當(dāng)從數(shù)據(jù)庫中(即模型層)查詢到某些新聞時,首先進(jìn)行對象關(guān)系映射,也就是將每條新聞記錄轉(zhuǎn)變?yōu)橐粋€News對象,然后再將News對象放入一個容器,在視圖層顯示時,從容器中將他們(News對象)一一取出,然后在視圖層予以顯示。
這個過程中,傳統(tǒng)的處理方法是首先將News類作為Object類放入相應(yīng)容器,讀取時在再將容器中的每個對象(此時為Object類型)轉(zhuǎn)型為對應(yīng)的News類,然后進(jìn)行相應(yīng)的處理。
為了簡單起見,我們用下面的代碼來模擬上述過程。上述的處理過程很明了,但實際上隱含了一個錯誤,在程序的輸出語句中,為了使用News類的方法,需要將對象強(qiáng)制轉(zhuǎn)型為News類型,這個轉(zhuǎn)型在編譯階段不會出現(xiàn)任何問題,但在運行時,卻拋出ClassCastException轉(zhuǎn)型異常,從而造成程序的異常終止。另外此程序的可讀性也不好,因為我們在使用map容器取對象時,根本不知道其中存放的是什么對象。
在JDK1.4之前,在處理相似的問題時,別無他法,只能這樣來處理,至于運行時異常,只能靠我們寫程序時小心。
一、利用泛型解決上述問題
Java的泛型就是在定義的同時明確指名其類型,增強(qiáng)程序的可讀性。同時類型的檢查在編譯階段就可以完成,避免運行時的異常,從而使程序有更強(qiáng)的健壯性。
泛型的定義形式為:classJava_Generics<K,V>,這里邊的K和V就像方法中的參數(shù)一樣,代表類型。
在Java的類庫中,使用變量E表示集合的元素類型,K和V分別表示關(guān)鍵字與值的類型。T(需要時還可以用臨近的字母U和S)可以表示任意類型。
現(xiàn)在利用泛型來重寫Test類中的main函數(shù)的部分關(guān)鍵代碼,News類不變,更改如下:這段代碼必須在JDK1.5或更高的版本上才能正確編譯,注釋掉的那行代碼就是前面出現(xiàn)ClassCastException錯誤的原因。之所以被注釋掉,是因為他在編譯階段就被發(fā)現(xiàn)了問題,必須做相應(yīng)更改才能通過編譯,提高了程序的健壯性。另外,當(dāng)我們看到Map的定義的時候,很清楚能向Map中放入什么類型的對象,程序的可讀性也大大增強(qiáng)。
基于上述示例的泛型應(yīng)用在Java編程中的應(yīng)用極為廣泛,但都可以利用上述示例來方便的解決問題。在實際應(yīng)用中,從容器中讀出所有元素時,也可以利用Iterator指定。比如在一個List
容器中,把List轉(zhuǎn)換為Iterator:Iteratorit=list.iterator();這是可以使用泛型的另外一個地方。
二、泛型使用應(yīng)注意的問題
究竟什么類可以指定特定的對象,使用泛型呢?最簡單有效的方法是查閱JDK的API幫助文檔,凡是后面有或等尖括號的,就可以指定明確的類型
另外,在使用泛型編程時還要注意以下幾點:
(1)不可以用一個基本類型(如intfloat)來替換泛型。
(2)泛型類不可以繼承Exception類。
(3)不可以定義泛型數(shù)組。
(4)不可以用泛型構(gòu)造對象,即:Newsnews=newT();是錯誤的。
(5)在static方法中不可以使用泛型,泛型變量也不可以用static關(guān)鍵字來修飾。
總之,在Java語言中使用泛型,會大大增強(qiáng)程序的易讀性和健壯性,把隱含錯誤消除在編譯階段。學(xué)習(xí)如何使用泛型類型相當(dāng)簡單,但是同樣也需要防范一些可能出現(xiàn)的錯誤。
這個過程中,傳統(tǒng)的處理方法是首先將News類作為Object類放入相應(yīng)容器,讀取時在再將容器中的每個對象(此時為Object類型)轉(zhuǎn)型為對應(yīng)的News類,然后進(jìn)行相應(yīng)的處理。
為了簡單起見,我們用下面的代碼來模擬上述過程。上述的處理過程很明了,但實際上隱含了一個錯誤,在程序的輸出語句中,為了使用News類的方法,需要將對象強(qiáng)制轉(zhuǎn)型為News類型,這個轉(zhuǎn)型在編譯階段不會出現(xiàn)任何問題,但在運行時,卻拋出ClassCastException轉(zhuǎn)型異常,從而造成程序的異常終止。另外此程序的可讀性也不好,因為我們在使用map容器取對象時,根本不知道其中存放的是什么對象。
在JDK1.4之前,在處理相似的問題時,別無他法,只能這樣來處理,至于運行時異常,只能靠我們寫程序時小心。
一、利用泛型解決上述問題
Java的泛型就是在定義的同時明確指名其類型,增強(qiáng)程序的可讀性。同時類型的檢查在編譯階段就可以完成,避免運行時的異常,從而使程序有更強(qiáng)的健壯性。
泛型的定義形式為:classJava_Generics<K,V>,這里邊的K和V就像方法中的參數(shù)一樣,代表類型。
在Java的類庫中,使用變量E表示集合的元素類型,K和V分別表示關(guān)鍵字與值的類型。T(需要時還可以用臨近的字母U和S)可以表示任意類型。
現(xiàn)在利用泛型來重寫Test類中的main函數(shù)的部分關(guān)鍵代碼,News類不變,更改如下:這段代碼必須在JDK1.5或更高的版本上才能正確編譯,注釋掉的那行代碼就是前面出現(xiàn)ClassCastException錯誤的原因。之所以被注釋掉,是因為他在編譯階段就被發(fā)現(xiàn)了問題,必須做相應(yīng)更改才能通過編譯,提高了程序的健壯性。另外,當(dāng)我們看到Map的定義的時候,很清楚能向Map中放入什么類型的對象,程序的可讀性也大大增強(qiáng)。
基于上述示例的泛型應(yīng)用在Java編程中的應(yīng)用極為廣泛,但都可以利用上述示例來方便的解決問題。在實際應(yīng)用中,從容器中讀出所有元素時,也可以利用Iterator指定。比如在一個List
容器中,把List轉(zhuǎn)換為Iterator:Iteratorit=list.iterator();這是可以使用泛型的另外一個地方。
二、泛型使用應(yīng)注意的問題
究竟什么類可以指定特定的對象,使用泛型呢?最簡單有效的方法是查閱JDK的API幫助文檔,凡是后面有或等尖括號的,就可以指定明確的類型
另外,在使用泛型編程時還要注意以下幾點:
(1)不可以用一個基本類型(如intfloat)來替換泛型。
(2)泛型類不可以繼承Exception類。
(3)不可以定義泛型數(shù)組。
(4)不可以用泛型構(gòu)造對象,即:Newsnews=newT();是錯誤的。
(5)在static方法中不可以使用泛型,泛型變量也不可以用static關(guān)鍵字來修飾。
總之,在Java語言中使用泛型,會大大增強(qiáng)程序的易讀性和健壯性,把隱含錯誤消除在編譯階段。學(xué)習(xí)如何使用泛型類型相當(dāng)簡單,但是同樣也需要防范一些可能出現(xiàn)的錯誤。
欄目分類
熱門排行
推薦信息
- 為什么發(fā)表論文都不開雜志社的發(fā)票呢?
- 2021-2022年CSCD中國科學(xué)引文數(shù)據(jù)庫來源期刊列表-理科南大核心目錄完整版
- CSCD中國科學(xué)引文數(shù)據(jù)庫來源期刊列表(2023-2024年度)南大核心目錄
- 融媒體環(huán)境下地方新聞網(wǎng)站媒體的發(fā)展路徑
- 創(chuàng)新與繼承:70周年獻(xiàn)禮片“三杰”研究
- 人本導(dǎo)向下的城市更新規(guī)劃思路探索——以上海松江區(qū)中山街道老城區(qū)為例
- 預(yù)制裝配式地鐵車站施工技術(shù)
- 從框架理論看“中國學(xué)習(xí)的人”
- 互聯(lián)網(wǎng)環(huán)境下古都洛陽城市形象建構(gòu)與傳播探析
- 價值工程在房地產(chǎn)開發(fā)管理分工中應(yīng)用
期刊知識
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 2023JCR影響因子正式公布!
- 國內(nèi)核心期刊分級情況概覽及說明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問題”。
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個知識點。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫規(guī)則
- 盤點那些評職稱超管用的資源,1,3和5已經(jīng)“絕種”了
- 職稱話題| 為什么黨校更認(rèn)可省市級黨報?是否有什么說據(jù)?還有哪些機(jī)構(gòu)認(rèn)可黨報?
- 《農(nóng)業(yè)經(jīng)濟(jì)》論文投稿解析,難度指數(shù)四顆星,附好發(fā)選題!