優(yōu)勝?gòu)倪x擇開(kāi)始,我們是您最好的選擇!—— 中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)

Java型的研究與應(yīng)用-科技論文

作者:中州期刊聯(lián)盟來(lái)源:原創(chuàng)日期:2012-08-31人氣:1336
在Java編程中,經(jīng)常遇到眾多對(duì)象的存取情況,比如在一個(gè)新聞系統(tǒng)中(假定新聞?lì)悶镹ews),當(dāng)從數(shù)據(jù)庫(kù)中(即模型層)查詢(xún)到某些新聞時(shí),首先進(jìn)行對(duì)象關(guān)系映射,也就是將每條新聞?dòng)涗涋D(zhuǎn)變?yōu)橐粋€(gè)News對(duì)象,然后再將News對(duì)象放入一個(gè)容器,在視圖層顯示時(shí),從容器中將他們(News對(duì)象)一一取出,然后在視圖層予以顯示。
這個(gè)過(guò)程中,傳統(tǒng)的處理方法是首先將News類(lèi)作為Object類(lèi)放入相應(yīng)容器,讀取時(shí)在再將容器中的每個(gè)對(duì)象(此時(shí)為Object類(lèi)型)轉(zhuǎn)型為對(duì)應(yīng)的News類(lèi),然后進(jìn)行相應(yīng)的處理。
為了簡(jiǎn)單起見(jiàn),我們用下面的代碼來(lái)模擬上述過(guò)程。上述的處理過(guò)程很明了,但實(shí)際上隱含了一個(gè)錯(cuò)誤,在程序的輸出語(yǔ)句中,為了使用News類(lèi)的方法,需要將對(duì)象強(qiáng)制轉(zhuǎn)型為News類(lèi)型,這個(gè)轉(zhuǎn)型在編譯階段不會(huì)出現(xiàn)任何問(wèn)題,但在運(yùn)行時(shí),卻拋出ClassCastException轉(zhuǎn)型異常,從而造成程序的異常終止。另外此程序的可讀性也不好,因?yàn)槲覀冊(cè)谑褂胢ap容器取對(duì)象時(shí),根本不知道其中存放的是什么對(duì)象。
在JDK1.4之前,在處理相似的問(wèn)題時(shí),別無(wú)他法,只能這樣來(lái)處理,至于運(yùn)行時(shí)異常,只能靠我們寫(xiě)程序時(shí)小心。
一、利用泛型解決上述問(wèn)題
Java的泛型就是在定義的同時(shí)明確指名其類(lèi)型,增強(qiáng)程序的可讀性。同時(shí)類(lèi)型的檢查在編譯階段就可以完成,避免運(yùn)行時(shí)的異常,從而使程序有更強(qiáng)的健壯性。
泛型的定義形式為:classJava_Generics<K,V>,這里邊的K和V就像方法中的參數(shù)一樣,代表類(lèi)型。
在Java的類(lèi)庫(kù)中,使用變量E表示集合的元素類(lèi)型,K和V分別表示關(guān)鍵字與值的類(lèi)型。T(需要時(shí)還可以用臨近的字母U和S)可以表示任意類(lèi)型。
現(xiàn)在利用泛型來(lái)重寫(xiě)Test類(lèi)中的main函數(shù)的部分關(guān)鍵代碼,News類(lèi)不變,更改如下:這段代碼必須在JDK1.5或更高的版本上才能正確編譯,注釋掉的那行代碼就是前面出現(xiàn)ClassCastException錯(cuò)誤的原因。之所以被注釋掉,是因?yàn)樗诰幾g階段就被發(fā)現(xiàn)了問(wèn)題,必須做相應(yīng)更改才能通過(guò)編譯,提高了程序的健壯性。另外,當(dāng)我們看到Map的定義的時(shí)候,很清楚能向Map中放入什么類(lèi)型的對(duì)象,程序的可讀性也大大增強(qiáng)。
基于上述示例的泛型應(yīng)用在Java編程中的應(yīng)用極為廣泛,但都可以利用上述示例來(lái)方便的解決問(wèn)題。在實(shí)際應(yīng)用中,從容器中讀出所有元素時(shí),也可以利用Iterator指定。比如在一個(gè)List
容器中,把List轉(zhuǎn)換為Iterator:Iteratorit=list.iterator();這是可以使用泛型的另外一個(gè)地方。
二、泛型使用應(yīng)注意的問(wèn)題
究竟什么類(lèi)可以指定特定的對(duì)象,使用泛型呢?最簡(jiǎn)單有效的方法是查閱JDK的API幫助文檔,凡是后面有或等尖括號(hào)的,就可以指定明確的類(lèi)型
另外,在使用泛型編程時(shí)還要注意以下幾點(diǎn):
(1)不可以用一個(gè)基本類(lèi)型(如intfloat)來(lái)替換泛型。
(2)泛型類(lèi)不可以繼承Exception類(lèi)。
(3)不可以定義泛型數(shù)組。
(4)不可以用泛型構(gòu)造對(duì)象,即:Newsnews=newT();是錯(cuò)誤的。
(5)在static方法中不可以使用泛型,泛型變量也不可以用static關(guān)鍵字來(lái)修飾。
總之,在Java語(yǔ)言中使用泛型,會(huì)大大增強(qiáng)程序的易讀性和健壯性,把隱含錯(cuò)誤消除在編譯階段。學(xué)習(xí)如何使用泛型類(lèi)型相當(dāng)簡(jiǎn)單,但是同樣也需要防范一些可能出現(xiàn)的錯(cuò)誤。

網(wǎng)絡(luò)客服QQ: 沈編輯

投訴建議:0373-5939925????投訴建議QQ:

招聘合作:2851259250@qq.com (如您是期刊主編、文章高手,可通過(guò)郵件合作)

地址:河南省新鄉(xiāng)市金穗大道東段266號(hào)中州期刊聯(lián)盟 ICP備案號(hào):豫ICP備2020036848

【免責(zé)聲明】:中州期刊聯(lián)盟所提供的信息資源如有侵權(quán)、違規(guī),請(qǐng)及時(shí)告知。

版權(quán)所有:中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)

關(guān)注”中州期刊聯(lián)盟”公眾號(hào)
了解論文寫(xiě)作全系列課程

核心期刊為何難發(fā)?

論文發(fā)表總嫌貴?

職院?jiǎn)挝话l(fā)核心?

掃描關(guān)注公眾號(hào)

論文發(fā)表不再有疑惑

論文寫(xiě)作全系列課程

掃碼了解更多

輕松寫(xiě)核心期刊論文

在線(xiàn)留言