日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

泛型类型通常在Dao和Service 中使用BaseDaoT extends Serializable的泛型

發(fā)布時(shí)間:2025/4/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 泛型类型通常在Dao和Service 中使用BaseDaoT extends Serializable的泛型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近朋友幾篇文章介紹了改泛型類(lèi)型的文章. 關(guān)聯(lián)文章的地址

????經(jīng)??吹侥切?xiě)好的項(xiàng)目的dao是用的泛型,就不不理解為什么,看到了這個(gè)論壇上的兩個(gè)例子,粘給大家:

????泛型是Java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類(lèi)型,也就是說(shuō)所操縱的數(shù)據(jù)類(lèi)型被指定為一個(gè)參數(shù)。這類(lèi)參數(shù)類(lèi)型可以用在類(lèi)、接口和方法的創(chuàng)建中,分別稱(chēng)為泛型類(lèi)、泛型接口、泛型方法。

????Java語(yǔ)言引入泛型的好處是安全簡(jiǎn)略。

????在Java SE 1.5之前,沒(méi)有泛型的情況的下,通過(guò)對(duì)類(lèi)型Object的引用來(lái)實(shí)現(xiàn)參數(shù)的“恣意化”,“恣意化”帶來(lái)的缺陷是要做顯式的強(qiáng)制類(lèi)型轉(zhuǎn)換,而這類(lèi)轉(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)和隱式的,提高代碼的重用率。

????泛型在應(yīng)用中還有一些規(guī)則和限制:

????1、泛型的類(lèi)型參數(shù)只能是類(lèi)類(lèi)型(包含自定義類(lèi)),不能是簡(jiǎn)略類(lèi)型。

????2、同一種泛型可以對(duì)應(yīng)多個(gè)版本(因?yàn)閰?shù)類(lèi)型是不確定的),不同版本的泛型類(lèi)實(shí)例是不兼容的。

????3、泛型的類(lèi)型參數(shù)可以有多個(gè)。

????4、泛型的參數(shù)類(lèi)型可以應(yīng)用extends語(yǔ)句,例如<T extends superclass>。習(xí)慣上成為“有界類(lèi)型”。

????5、泛型的參數(shù)類(lèi)型還可以是通配符類(lèi)型。例如Class<?> classType = Class.forName(java.lang.String);

????泛型還有接口、方法等等,內(nèi)容很多,須要花費(fèi)一番工夫才能理解把握并熟練應(yīng)用。在此給出我曾經(jīng)了解泛型時(shí)候?qū)懗龅膬蓚€(gè)例子(根據(jù)看的印象寫(xiě)的),實(shí)現(xiàn)一樣的功能,一個(gè)應(yīng)用了泛型,一個(gè)沒(méi)有應(yīng)用,通過(guò)比較,可以很快學(xué)會(huì)泛型的應(yīng)用,學(xué)會(huì)這個(gè)基本上學(xué)會(huì)了泛型70%的內(nèi)容。

????public class Gen<T> {

????private T ob; //定義泛型成員變量

????public Gen(T ob) {

????this.ob = ob;

????}

????public T getOb() {

????return ob;

????}

????public void setOb(T ob) {

????this.ob = ob;

????}

????public void showTyep() {

????System.out.println("T的實(shí)際類(lèi)型是: " + ob.getClass().getName());

????}

????}

????public class GenDemo {

????public static void main(String[] args){

????//定義泛型類(lèi)Gen的一個(gè)Integer版本

????Gen<Integer> intOb=new Gen<Integer>(88);

????intOb.showTyep();

????int i= intOb.getOb();

????System.out.println("value= " + i);

????System.out.println("----------------------------------");

每日一道理
喜歡海,不管湛藍(lán)或是光燦,不管平靜或是波濤洶涌,那起伏蕩漾的,那絲絲的波動(dòng);喜歡聽(tīng)海的聲音,不管是浪擊礁石,或是浪濤翻滾,那輕柔的,那澎湃的;喜歡看海,不管心情是舒暢的或是沉悶的,不管天氣是晴朗的或是陰沉的,那舒心的,那松弛的……

????//定義泛型類(lèi)Gen的一個(gè)String版本

????Gen<String> strOb=new Gen<String>("Hello Gen!");

????strOb.showTyep();

????String s=strOb.getOb();

????System.out.println("value= " + s);

????}

????}

????例子二:這是個(gè)沒(méi)有應(yīng)用泛型的例子

????public class Gen2 {

????private Object ob; //定義一個(gè)通用類(lèi)型成員

????public Gen2(Object ob) {

????this.ob = ob;

????}

????public Object getOb() {

????return ob;

????}

????public void setOb(Object ob) {

????this.ob = ob;

????}

????public void showTyep() {

????System.out.println("T的實(shí)際類(lèi)型是: " + ob.getClass().getName());

????}

????}

????public class GenDemo2 {

????public static void main(String[] args) {

????//定義類(lèi)Gen2的一個(gè)Integer版本

????Gen2 intOb = new Gen2(new Integer(88));

????intOb.showTyep();

????int i = (Integer) intOb.getOb();

????System.out.println("value= " + i);

????System.out.println("----------------------------------");

????//定義類(lèi)Gen2的一個(gè)String版本

????Gen2 strOb = new Gen2("Hello Gen!");

????strOb.showTyep();

????String s = (String) strOb.getOb();

????System.out.println("value= " + s);

????}

????}

????運(yùn)行結(jié)果:

????兩個(gè)例子運(yùn)行Demo結(jié)果是相同的,控制臺(tái)輸出結(jié)果如下:

????T的實(shí)際類(lèi)型是:

????java.lang.Integer

????value= 88

????----------------------------------

????T的實(shí)際類(lèi)型是: java.lang.String

????value= Hello Gen!

????Process finished with exit code 0

????通過(guò)應(yīng)用泛型T增加Dao的冗余代碼,當(dāng)T繼承某個(gè)對(duì)象時(shí)(T extends EntityDao)限制了參數(shù)類(lèi)型必須繼承該對(duì)象(EntityDao),并且ClassT必須要有泛型參數(shù)(DeptDaoImpl extends ClassT<Dept>),否則轉(zhuǎn)換失敗。

文章結(jié)束給大家分享下程序員的一些笑話(huà)語(yǔ)錄: 一個(gè)合格的程序員是不會(huì)寫(xiě)出 諸如 “摧毀地球” 這樣的程序的,他們會(huì)寫(xiě)一個(gè)函數(shù)叫 “摧毀行星”而把地球當(dāng)一個(gè)參數(shù)傳進(jìn)去。

--------------------------------- 原創(chuàng)文章 By
泛型和類(lèi)型
---------------------------------

轉(zhuǎn)載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/26/3100602.html

總結(jié)

以上是生活随笔為你收集整理的泛型类型通常在Dao和Service 中使用BaseDaoT extends Serializable的泛型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。