成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

泛型之泛型類

caoym / 564人閱讀

摘要:定義具有一個(gè)或多個(gè)類型變量的類,稱之為泛型類。泛型類的繼承創(chuàng)建對(duì)象的兩種方式錯(cuò)誤方式錯(cuò)誤原因繼承了泛型類,但并不是泛型類,所以不能這樣創(chuàng)建對(duì)象。同樣是泛型類,它的父類也是泛型類,它傳遞的是常量。

泛型類
public class A {
    //在成員變量上使用泛型
    private T t;
    
    public A() {}
    
    //構(gòu)造參數(shù)類型上使用泛型
    public A(T t) {
       this.t = t;
    }
    
    //方法返回值上使用泛型
    public T getT() {
        return t;
    }
    
    //方法的參數(shù)上使用泛型
    //這是泛型類的方法,而不是泛型方法
    public void setT(T t) {
        this.t = t;
    }
    
    //方法的返回值和參數(shù)類型上使用泛型
    public T foo(T t) {
        return t;
    }
    
    public void foo2() {
        //T t = ....; //局部變量的引用類型上使用泛型
        //new T(); //不可以這樣使用
    }
    
    public void foo3() {
        //在創(chuàng)建泛型類對(duì)象時(shí),即為類型變量賦值,這里將T賦值為String類型
        A a = new A();
        //將T賦值為Integer類型
        A a1 = new A();
    }
}

A是一個(gè)泛型類,T它是一個(gè)變量,需要賦類型值,如果有多個(gè)類型變量,就用逗號(hào)分隔,比如 Jdk 的 Map 接口:interface Map {}。
定義:具有一個(gè)或多個(gè)類型變量的類,稱之為泛型類。
泛型類是一個(gè)存在類型變量的類,存在可變的因素,所以說是一個(gè)不完整的類。那么當(dāng)子類去繼承的時(shí)候,把里面的類型變量賦予了類型,那么這個(gè)類就完整了,就可以使用了。

泛型類的繼承
public class B {}

class BB extends B {}

創(chuàng)建BB對(duì)象的兩種方式

B b = new BB()

BB b = new BB()

錯(cuò)誤方式

BB bb = new BB()

錯(cuò)誤原因:BB 繼承了泛型類 B,但 BB 并不是泛型類,所以不能這樣創(chuàng)建對(duì)象。

public class C {}

class CC extends C {}
class CCC extends C {}

創(chuàng)建CC對(duì)象

C c = new CC()

C c = new CC()

泛型引用和創(chuàng)建,兩端給出的泛型變量必須相同(等號(hào)前后的泛型類型應(yīng)該保持一致),否則會(huì)報(bào)錯(cuò)。
CC是泛型類,它的父類也泛型類,它可以給父類傳遞類型常量,也可以傳遞變量,這里傳遞的是變量。
CCC同樣是泛型類,它的父類也是泛型類,它傳遞的是常量。

泛型類的子類重寫父類方法
public class D {
    private T bean;
    
    public void setBean(T bean) {
        this.bean = bean;
    }
}

class DD extends D {
    /**
     * 子類重寫父類方法,參數(shù)類型必須是E,因?yàn)樽宇愒诙x
     * 已經(jīng)把類型E賦給了父類。
     */
    @Override
    public void setBean(E o) {
        //TODO
    }
}
class DDD extends D {
    //子類定義時(shí)已經(jīng)把類型String賦給了父類,所以方法重寫時(shí)類型是String
    public void setBean(String str) {
        //TODO
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73410.html

相關(guān)文章

  • 泛型之泛型方法

    摘要:泛型方法顯式賦值張三李四王五隱式賦值,常用此方式,可以不指定張三李四王五泛型方法不受類的限制,也就是說,即使方法所在的類不是泛型類,也可以定義泛型方法在泛型類中定義的方法,也不一定是泛型方法,就看你如何定義了。泛型類中可以定義泛型方法。 public class F { //泛型方法 public static T getT(T[] array...

    sydMobile 評(píng)論0 收藏0
  • 型之通配符

    摘要:調(diào)用相當(dāng)于通過使用通配符,可以傳遞任何類型的對(duì)象,但也是有缺點(diǎn)的。使用通配符,賦值傳值的時(shí)候方便了,但是對(duì)泛型類中參數(shù)為泛型的方法起到了副作用。結(jié)論當(dāng)使用父界限定通配符時(shí),泛型類中返回值為泛型的方法不能使用。 數(shù)組 VS List 第一回合數(shù)組類型為Object,可以存儲(chǔ)任意類型的對(duì)象,List集合同樣可以做到 Object[] obj = new Object[1]; List li...

    PingCAP 評(píng)論0 收藏0
  • Java 型之上界下界通配符

    摘要:泛型之上界下界通配符本教程是為編寫的。這是在使用泛型編程時(shí)一個(gè)常見的誤解,也是一個(gè)需要學(xué)習(xí)的重要概念。通配符使用指南學(xué)習(xí)使用泛型編程時(shí),更令人困惑的一個(gè)方面是確定何時(shí)使用上限有界通配符以及何時(shí)使用下限有界通配符。 Java 泛型之上界下界通配符 本Java教程是為JDK 8編寫的。本頁描述的示例和實(shí)踐沒有利用后續(xù)版本中引入的改進(jìn)。 泛型,繼承和子類 如你所知,只要類型兼容,就可以將一種...

    shiyang6017 評(píng)論0 收藏0
  • Java系列之泛

    摘要:總結(jié)泛型的類型必須是引用類型,不能是基本類型,泛型的個(gè)數(shù)可以有多個(gè),可以使用對(duì)創(chuàng)建對(duì)象時(shí)的泛型類型以及方法參數(shù)類型進(jìn)行限制,如使用關(guān)鍵字和對(duì)泛型的具體類型進(jìn)行向下限制或向上限制,最后一點(diǎn),可以聲明泛型數(shù)組,但是不能創(chuàng)建泛型數(shù)組的實(shí)例。 自從 JDK 1.5 提供了泛型概念,泛型使得開發(fā)者可以定義較為安全的類型,不至于強(qiáng)制類型轉(zhuǎn)化時(shí)出現(xiàn)類型轉(zhuǎn)化異常,在沒有反省之前,可以通過 Object...

    MadPecker 評(píng)論0 收藏0
  • Java 之泛型通配符 ? extends T 與 ? super T 解惑

    摘要:簡述大家在平時(shí)的工作學(xué)習(xí)中肯定會(huì)見過不少如下的語句我們都知道上面的代碼時(shí)關(guān)于泛型的那么這兩個(gè)不同的寫法都有什么區(qū)別呢首先說到的泛型我們必須要提到的是泛型的類型擦除機(jī)制中的泛型基本上都是在編譯器這個(gè)層次來實(shí)現(xiàn)的在生成的字節(jié)代碼中是不包含泛型中 簡述 大家在平時(shí)的工作學(xué)習(xí)中, 肯定會(huì)見過不少如下的語句: List 就表示了泛型參數(shù)是某個(gè)類型, 只不過我們并不知道它的具體類型時(shí)什么.List...

    woshicixide 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<