中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

泛型在Java中的應(yīng)用-創(chuàng)新互聯(lián)

簡(jiǎn)介

Java 泛型的參數(shù)只可以代表類(lèi),不能代表個(gè)別對(duì)象。由于 Java 泛型的類(lèi)型參數(shù)之實(shí)際類(lèi)型在編譯時(shí)會(huì)被消除,所以無(wú)法在運(yùn)行時(shí)得知其類(lèi)型參數(shù)的類(lèi)型。Java 編譯器在編譯泛型時(shí)會(huì)自動(dòng)加入類(lèi)型轉(zhuǎn)換的編碼,故運(yùn)行速度不會(huì)因?yàn)槭褂梅盒投?加快。Java 允許對(duì)個(gè)別泛型的類(lèi)型參數(shù)進(jìn)行約束,包括以下兩種形式(假設(shè) T 是泛型的類(lèi)型參數(shù),C 是一般類(lèi)、泛類(lèi),或是泛型的類(lèi)型參數(shù)):T 實(shí)現(xiàn)接口 I 。T 是 C ,或繼承自 C 。一個(gè)泛型類(lèi)不能實(shí)現(xiàn)Throwable接口。

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁(yè)設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開(kāi)發(fā)技術(shù)和網(wǎng)頁(yè)設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專(zhuān)業(yè)提供網(wǎng)站制作、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作(企業(yè)站、自適應(yīng)網(wǎng)站建設(shè)、電商門(mén)戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗(yàn)的提升,我們力求做到極致!

一. 模糊性錯(cuò)誤

對(duì)泛型類(lèi) User< T, K > 而言,聲明了兩個(gè)泛型類(lèi)參數(shù):T 和 K。在類(lèi)中試圖根據(jù)類(lèi)型參數(shù)的不同重載 set() 方法。這看起來(lái)沒(méi)什么問(wèn)題,可編譯器會(huì)報(bào)錯(cuò)

public class User<T, K> {
   //重載錯(cuò)誤
   public void set(T t) {
   }
   //重載錯(cuò)誤
   public void set(K k) {
   }
}

首先,當(dāng)聲明 User 對(duì)象時(shí),T 和 K 實(shí)際上不需要一定是不同的類(lèi)型,以下的兩種寫(xiě)法都是正確的

public class GenericMain {
   public static void main(String[] args) {
     User<String, Integer> stringIntegerUser = new User<>();
     User<String, String> stringStringUser = new User<>();
   }
}

對(duì)于第二種情況,T 和 K 都將被 String 替換,這使得 set() 方法的兩個(gè)版本完全相同,所以會(huì)導(dǎo)致重載失敗。

此外,對(duì) set() 方法的類(lèi)型擦除會(huì)使兩個(gè)版本都變?yōu)槿缦滦问剑?/p>

一樣會(huì)導(dǎo)致重載失敗

public void set(Object o) {
}

二. 不能實(shí)例化類(lèi)型參數(shù)

不能創(chuàng)建類(lèi)型參數(shù)的實(shí)例。因?yàn)榫幾g器不知道創(chuàng)建哪種類(lèi)型的對(duì)象,T 只是一個(gè)占位符

public class User<T> {
   private T t;
   public User() {
     //錯(cuò)誤
     t = new T();
   }
}

三.對(duì)靜態(tài)成員的限制

靜態(tài)成員不能使用在類(lèi)中聲明的類(lèi)型參數(shù),但是可以聲明靜態(tài)的泛型方法

public class User<T> {
   //錯(cuò)誤
   private static T t;
   //錯(cuò)誤
   public static T getT() {
     return t;
   }
   //正確
   public static <K> void test(K k) {
   }
}

四. 對(duì)泛型數(shù)組的限制

不能實(shí)例化元素類(lèi)型為類(lèi)型參數(shù)的數(shù)組,但是可以將數(shù)組指向類(lèi)型兼容的數(shù)組的引用

public class User<T> {
   private T[] values;
   public User(T[] values) {
     //錯(cuò)誤,不能實(shí)例化元素類(lèi)型為類(lèi)型參數(shù)的數(shù)組
     this.values = new T[5];
     //正確,可以將values 指向類(lèi)型兼容的數(shù)組的引用
     this.values = values;
   }
}

此外,不能創(chuàng)建特定類(lèi)型的泛型引用數(shù)組,但使用通配符的話可以創(chuàng)建指向泛型類(lèi)型的引用的數(shù)組

public class User<T> {
   private T[] values;
   public User(T[] values) {
     this.values = values;
   }
}
public class GenericMain {
   public static void main(String[] args) {
     //錯(cuò)誤,不能創(chuàng)建特定類(lèi)型的泛型引用數(shù)組
     User<String>[] stringUsers = new User<>[10];
     //正確,使用通配符的話,可以創(chuàng)建指向泛型類(lèi)型的引用的數(shù)組
     User<?>[] users = new User<?>[10];
   }
}

五. 對(duì)泛型異常的限制

泛型類(lèi)不能擴(kuò)展 Throwable,意味著不能創(chuàng)建泛型異常類(lèi)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:泛型在Java中的應(yīng)用-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://m.rwnh.cn/article26/djigjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化域名注冊(cè)、網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
全南县| 蓬莱市| 周宁县| 当雄县| 苏州市| 福鼎市| 子长县| 育儿| 金平| 无极县| 临朐县| 时尚| 凌海市| 德清县| 斗六市| 灵丘县| 镇坪县| 宜君县| 石门县| 互助| 于田县| 乌拉特后旗| 乳山市| 湛江市| 隆安县| 海南省| 博客| 松桃| 昭平县| 蓬安县| 垫江县| 左云县| 宜昌市| 民县| 陇南市| 辉县市| 石泉县| 南通市| 七台河市| 岐山县| 闵行区|