首頁 > Java > java教程 > 主體

java之泛型深入

黄舟
發布: 2017-02-24 09:52:34
原創
1371 人瀏覽過


接上文java泛型

一、限制泛型

  在上文中我們使類別class GenDemo<T> ,持有者T的範圍沒有限制,實際上相當於Object.
但是我們有時需要傳入的參數類型為某個介面或類別的實作或子類,而不是沒有限制的Ojbect
所以使用限制泛型。再次我們讓T為藉口Collection的實作:

import java.util.collection;public class GenDemo<T extends Collection>  {
    private T t;    public GenDemo(T t) {        this.t = t;
    }    public void setT(T t) {        this.t = t;
    }    public T getT(){        return T;
    }
}
登入後複製
登入後複製

   class GenDemo<T extends Collection> 使用限制泛型,決定了持有者T的型別只能是Collection的實作類,如果傳入的是非Collection類,譯時就會報錯

注意:<T extends Collection>使用了關鍵字extends, 但是extends 後面也可以使用接口,也可以使用類, 此處的extends 並不是繼承,這裡應該理解為T的型別是實作xx介面的實作類,或是繼承xx類的子類。
這裡的例子只示範了泛型方法的型別限定,對於泛型類別中型別參數的限制用完全一樣的規則,只是加在類別宣告的頭部,如:

public class Demo<T extends Comparable & Serializable> {
    // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}
登入後複製
登入後複製

二、多介面限制

主要使用extends關鍵字, 此處的extends統一了原有的extends和implements的概念, 即實作介面和繼承類別都使用extends,但是,仍然遵循應用的體系,java只能繼承一個類, 可以實作多個介面。也就是:

<T extends SomeClass & interface1 & interface2 & interface3>
登入後複製
登入後複製

三、通配符泛型

接上文java泛型

一、限制泛型

  在上文中我們使類class GenDemo<T> ,持有者T的範圍沒有限制, 實際上相當於Object.
但是我們有時需要傳入的參數類型為某個介面或類別的實作或子類,而不是沒有限制的Ojbect
所以使用限制泛型。再次我們讓T為藉口Collection的實作:

import java.util.collection;public class GenDemo<T extends Collection>  {
    private T t;    public GenDemo(T t) {        this.t = t;
    }    public void setT(T t) {        this.t = t;
    }    public T getT(){        return T;
    }
}
登入後複製
登入後複製

   class GenDemo<T extends Collection> 使用限制泛型,決定了持有者T的型別只能是Collection的實作類,如果傳入的是非Collection類,譯時就會報錯

注意:<T extends Collection>使用了關鍵字extends, 但是extends 後面也可以使用接口,也可以使用類, 此處的extends 並不是繼承,這裡應該理解為T的型別是實作xx介面的實作類,或是繼承xx類的子類。
這裡的例子只示範了泛型方法的型別限定,對於泛型類別中型別參數的限制用完全一樣的規則,只是加在類別宣告的頭部,如:

public class Demo<T extends Comparable & Serializable> {
    // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}
登入後複製
登入後複製

二、多介面限制

主要使用extends關鍵字, 此處的extends統一了原有的extends和implements的概念, 即實作介面和繼承類別都使用extends,但是,仍然遵循應用的體系,java只能繼承一個類, 可以實作多個介面。也就是:

<T extends SomeClass & interface1 & interface2 & interface3>
登入後複製
登入後複製

三、通配符泛型

 以上就是java之泛型深入的內容,更多相關內容請關注PHP中文網(www.php.cn)!


#
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!