真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

泛型在Java中的應用

簡介

Java 泛型的參數(shù)只可以代表類,不能代表個別對象。由于 Java 泛型的類型參數(shù)之實際類型在編譯時會被消除,所以無法在運行時得知其類型參數(shù)的類型。Java 編譯器在編譯泛型時會自動加入類型轉(zhuǎn)換的編碼,故運行速度不會因為使用泛型而 加快。Java 允許對個別泛型的類型參數(shù)進行約束,包括以下兩種形式(假設 T 是泛型的類型參數(shù),C 是一般類、泛類,或是泛型的類型參數(shù)):T 實現(xiàn)接口 I 。T 是 C ,或繼承自 C 。一個泛型類不能實現(xiàn)Throwable接口。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,巴青企業(yè)網(wǎng)站建設,巴青品牌網(wǎng)站建設,網(wǎng)站定制,巴青網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,巴青網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

一. 模糊性錯誤

對泛型類 User< T, K > 而言,聲明了兩個泛型類參數(shù):T 和 K。在類中試圖根據(jù)類型參數(shù)的不同重載 set() 方法。這看起來沒什么問題,可編譯器會報錯

public class User {
    //重載錯誤
    public void set(T t) {
    }
    //重載錯誤
    public void set(K k) {
    }
}

首先,當聲明 User 對象時,T 和 K 實際上不需要一定是不同的類型,以下的兩種寫法都是正確的

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

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

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

一樣會導致重載失敗

public void set(Object o) {
}

二. 不能實例化類型參數(shù)

不能創(chuàng)建類型參數(shù)的實例。因為編譯器不知道創(chuàng)建哪種類型的對象,T 只是一個占位符

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

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

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

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

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

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

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

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

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

五. 對泛型異常的限制

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


本文名稱:泛型在Java中的應用
文章路徑:http://weahome.cn/article/ihcpio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部