java中泛型的使用 java泛型中?和T的區(qū)別
夕逆IT
- 前端設(shè)計(jì)
- 2023-08-13
- 104

大家好,關(guān)于java中泛型的使用很多朋友都還不太明白,不過(guò)沒(méi)關(guān)系,因?yàn)榻裉煨【幘蛠?lái)為大家分享關(guān)于java泛型中?和T的區(qū)別的知識(shí)點(diǎn),相信應(yīng)該可以解決大家的一些困惑和問(wèn)題...
大家好,關(guān)于java中泛型的使用很多朋友都還不太明白,不過(guò)沒(méi)關(guān)系,因?yàn)榻裉煨【幘蛠?lái)為大家分享關(guān)于java泛型中?和T的區(qū)別的知識(shí)點(diǎn),相信應(yīng)該可以解決大家的一些困惑和問(wèn)題,如果碰巧可以解決您的問(wèn)題,還望關(guān)注下本站哦,希望對(duì)各位有所幫助!
Java中如何實(shí)現(xiàn)分頁(yè)功能
雖然現(xiàn)在有很多好用的框架,對(duì)分頁(yè)進(jìn)行支持,很簡(jiǎn)單的就把分頁(yè)的效果做出來(lái),但是如果手動(dòng)實(shí)現(xiàn)分頁(yè)效果又如何呢。
一、分頁(yè)的思路
首先我們得知道寫(xiě)分頁(yè)代碼時(shí)的思路,保持思路清晰,有步驟的進(jìn)行,才能行云如水。先來(lái)看看分頁(yè)的效果
這就是一個(gè)分頁(yè)導(dǎo)航,其中能得到的數(shù)據(jù)有
totalRecord:總共員工數(shù),數(shù)據(jù)庫(kù)中總的記錄數(shù),這里有55條
totalPage:總頁(yè)數(shù),11頁(yè)
pageSize:每頁(yè)顯示的記錄數(shù),這里可以看到每頁(yè)顯示5條
pageNum:當(dāng)前頁(yè)為第幾頁(yè),比如圖中就為第9頁(yè),因?yàn)?是沒(méi)有超鏈接的,
start:總共能顯示5頁(yè),讓用戶(hù)進(jìn)行點(diǎn)擊,7為起始頁(yè)
end:11為能顯示的尾頁(yè),也就是,如果用戶(hù)點(diǎn)擊第8頁(yè),那么start就為6,end就為10,每次都只有5頁(yè)共點(diǎn)擊查詢(xún)。
每次能夠得到對(duì)應(yīng)頁(yè)數(shù)所需要的5條數(shù)據(jù),等等這些數(shù)據(jù)都要在jsp中顯示出來(lái),也就是說(shuō),每次都要從后臺(tái)拿那么多數(shù)據(jù)過(guò)來(lái)進(jìn)行顯示,所以我們就想辦法把這些數(shù)據(jù)封裝在一個(gè)javabean當(dāng)中,每次后臺(tái)都將查詢(xún)到的數(shù)據(jù)放入javabean對(duì)象中,我們只需要將該對(duì)象存入request作用域,然后在jsp頁(yè)面中從域中獲取需要的數(shù)據(jù)即可。
二、創(chuàng)建PageBean存放數(shù)據(jù)
PageBean.java
總共需要8個(gè)屬性pageNum、pageSize、totalRecord、totalPage、startIndex、list、start、end,
pageNum、pageSize、totalRecord:通過(guò)構(gòu)造方法就能得到。pageNum請(qǐng)求頁(yè)面提交過(guò)來(lái)的參數(shù),pageSize是自己設(shè)置的,totalRecord是查詢(xún)數(shù)據(jù)庫(kù)得到的
totalPage、startIndex、start、end是通過(guò)內(nèi)部算法得出,
list需要通過(guò)查詢(xún)數(shù)據(jù)庫(kù)在通過(guò)set方式得到。
注意:該類(lèi)使用泛型是為了不僅僅在這個(gè)項(xiàng)目中使用,在別的項(xiàng)目中也同樣可以使用,
代碼如下
ViewCode三、在service層編寫(xiě)業(yè)務(wù)邏輯代碼
其實(shí)就是在該層將我們所需要的PageBean對(duì)象構(gòu)建好,返回給上一層
User類(lèi)是我們需要顯示的數(shù)據(jù)的封裝后的javabean。
四、Servlet中編寫(xiě)控制代碼
五、JSP中顯示數(shù)據(jù),構(gòu)建分頁(yè)導(dǎo)航
因?yàn)閷⑽覀兯行枰臄?shù)據(jù)都封裝在了pageBean中,pageBean對(duì)象又在request域中,所以在jsp頁(yè)面中,我們只需要拿到我們所需要的數(shù)據(jù),進(jìn)行顯示即可,構(gòu)造導(dǎo)航圖需要注意的有一點(diǎn),邏輯要搞清楚,想要顯示什么不想顯示什么,全屏自己控制了,只需要記得一點(diǎn),在請(qǐng)求Servlet時(shí),需要把請(qǐng)求的頁(yè)碼交給服務(wù)器。不然服務(wù)器不知道你要獲得第幾頁(yè)的數(shù)據(jù)。
我做的導(dǎo)航圖的邏輯代碼
顯示所有員工數(shù)量、總頁(yè)數(shù)
首先超鏈接
如果當(dāng)前頁(yè)為第一頁(yè)時(shí),就沒(méi)有上一頁(yè)這個(gè)超鏈接顯示
如果當(dāng)前頁(yè)不是第一頁(yè)也不是最后一頁(yè),則有上一頁(yè)和下一頁(yè)這個(gè)超鏈接顯示
如果當(dāng)前頁(yè)是最后一頁(yè),則只有上一頁(yè)這個(gè)超鏈接顯示,下一頁(yè)沒(méi)有
尾頁(yè)超鏈接
、
代碼
ViewCode六、總結(jié)
其實(shí)分頁(yè)真的很簡(jiǎn)單,難點(diǎn)就在一個(gè)地方,javabean的構(gòu)建,只要理清楚了pageBean中需要哪些屬性,各種屬性的作用是什么,那么分頁(yè)就soeasy了。還有一個(gè)就是在jsp中寫(xiě)分頁(yè)導(dǎo)航時(shí)的邏輯,不要混亂了。
泛型機(jī)制的底層原理
泛型是JavaSE1.5的新特性,泛型的本質(zhì)是參數(shù)化類(lèi)型,也就是說(shuō)所操作的數(shù)據(jù)類(lèi)型被指定為一個(gè)參數(shù)。這種參數(shù)類(lèi)型可以用在類(lèi)、接口和方法的創(chuàng)建中,分別稱(chēng)為泛型類(lèi)、泛型接口、泛型方法。
Java語(yǔ)言引入泛型的好處是安全簡(jiǎn)單。
在JavaSE1.5之前,沒(méi)有泛型的情況的下,通過(guò)對(duì)類(lèi)型Object的引用來(lái)實(shí)現(xiàn)參數(shù)的“任意化”,“任意化”帶來(lái)的缺點(diǎn)是要做顯式的強(qiáng)制類(lèi)型轉(zhuǎn)換,而這種轉(zhuǎn)換是要求開(kāi)發(fā)者對(duì)實(shí)際參數(shù)類(lèi)型可以預(yù)知的情況下進(jìn)行的。對(duì)于強(qiáng)制類(lèi)型轉(zhuǎn)換錯(cuò)誤的情況,編譯器可能不提示錯(cuò)誤,在運(yùn)行的時(shí)候才出現(xiàn)異常,這是一個(gè)安全隱患。
泛型的好處是在編譯的時(shí)候檢查類(lèi)型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的,提高代碼的重用率。
head first java中關(guān)于集合和泛型的疑問(wèn)有哪些
這書(shū)可以!簡(jiǎn)單易懂!
泛型和反射都必須依賴(lài)運(yùn)行時(shí)嗎
1就泛型和反射的基本思想來(lái)說(shuō),這倆功能的實(shí)現(xiàn)并不依賴(lài)于運(yùn)行時(shí)。
例如C++而言,本身就支持泛型,如果需要支持反射,只需要添加相應(yīng)的管理功能即可。
2依賴(lài)運(yùn)行時(shí)的語(yǔ)言支持泛型和反射技術(shù)需要依賴(lài)運(yùn)行時(shí)是因?yàn)槠淙魏未a的執(zhí)行都需要運(yùn)行時(shí)。
例如你說(shuō)的Java/C#是一次編譯成中間語(yǔ)言,然后在設(shè)備中在進(jìn)一步的編譯/解釋。其任何代碼都在后一步需要runtime支持。
3既然有了runtime支持,這些語(yǔ)言的泛型和反射技術(shù)自然可以多一些在沒(méi)有運(yùn)行時(shí)搞不定的能力
例如動(dòng)態(tài)的(類(lèi)or方法)調(diào)用的確認(rèn),或者說(shuō)重載,重寫(xiě)。
哪些語(yǔ)言支持泛型
JAVA語(yǔ)言MySQL語(yǔ)言Python語(yǔ)言
java怎么獲取一個(gè)泛型方法的真實(shí)泛型類(lèi)型
我認(rèn)為,如果在方法內(nèi)部獲取還是可行的,但如果希望通過(guò)一個(gè)方法來(lái)獲取一個(gè)泛型方法的真實(shí)泛型類(lèi)型,那應(yīng)該是實(shí)現(xiàn)不了。
首先Java中的泛型,也叫參數(shù)化類(lèi)型,沒(méi)記錯(cuò)泛型應(yīng)該是jdk5引入的特性,泛型目的在于使數(shù)據(jù)類(lèi)型可以作為參數(shù)傳入,從而可以動(dòng)態(tài)的改變某個(gè)變量的數(shù)據(jù)類(lèi)型。
那么什么是泛型方法呢?就是泛型類(lèi)型是聲明在方法上,只有當(dāng)調(diào)用該方法時(shí)才會(huì)將真實(shí)類(lèi)型傳入。如果你是在方法內(nèi)部獲取那直接調(diào)用泛型對(duì)象的getClass方法即可。但如果希望通過(guò)一方法來(lái)獲取某個(gè)泛型方法的真實(shí)類(lèi)型,我認(rèn)為沒(méi)法實(shí)現(xiàn)。因?yàn)槲凑{(diào)用方法時(shí),真實(shí)的數(shù)據(jù)類(lèi)型還未入,所以根本無(wú)法取到泛型對(duì)應(yīng)的真實(shí)類(lèi)型。
所以下面我就說(shuō)說(shuō)如何在泛型方法內(nèi)部獲取泛型的真實(shí)類(lèi)型。
老規(guī)矩,咱寫(xiě)段代碼再來(lái)解釋。泛型方法的例子如下圖:
在上圖中,我聲明了一個(gè)泛型方法:findFirst,用于獲取數(shù)組的第一個(gè)元素。
運(yùn)行結(jié)果如下圖:
以上就是我的答案,希望對(duì)你有所幫助吧
關(guān)于java中泛型的使用,java泛型中?和T的區(qū)別的介紹到此結(jié)束,希望對(duì)大家有所幫助。
本文鏈接:http://www.resource-tj.com/qianduan/2502.html