JAVA泛型學習

來源:互聯網
上載者:User

標籤:java泛型學習

JAVA泛型學習

   泛型是JAVA在JDK1.5提出的新特性,主要是為了代碼的安全性和代碼的重複利用。

    

    安全性:在沒有提出泛型時,主要是通過傳遞Object來實現傳入類型的引用,然後在取得資料時進行強制類型轉換,但是這樣會存在一個問題,就是比如一個集合中存入了A類型的資料,然後遍曆集合擷取A類型的資料時,需要(A)Object來強制轉換,如果集合中也存入了一個B類型的資料,那麼在編譯期間不會報問題,運行時就會出現問題,因為無法將一個B類型的資料轉換為A類型的資料,也就是類型轉換異常。為瞭解決這個問題,提出了泛型的概念。這樣就可以在將B存入集合前就進行限定,並且在取資料時,無需強制類型轉換,減少了代碼的運行異常錯誤。

    我們知道數組是相同資料類型的一個集合,缺點就是數組的容量是固定的,無法動態擴充。如果集合對放入其中的物件類型做一個限定,也就可以看成為一個相同物件類型且能動態擴充容量的對象“數組”(集合)。這樣我們在存入資料和取出資料時,都能知道資料的類型,泛型就是提供這種想法的功能實現。


    代碼重複利用:也有解釋為動態功能,即能根據運行時傳遞的類型來自動匹配.

     1) 泛型類

    public  class Demo<E>{

        private E e;

        Demo(E e){

            this.e=e;

        }    

        public E getE(){

            return e;

        } 

    }

    String b="hello";

    Demo demo=new Demo(String b);

    String a=demo.getE();

    

    Demo demo1=new Demo(30);//這裡不是基本類型,而是自動封裝為Integer對象傳遞。

    Integer iter=demo1.getE();

    

    從上面可以看出,通過傳遞不同的參考型別給類,即可得到對應的參考型別對象。

    2)泛型方法(泛型方法與泛型類沒有必然的關係,可以是普通類,但是類中方法為泛型方法)

    public class Test{

    public <E> void demo(E e){ 

            System.out.println(E.class.getName()); //輸出class對象的名稱

        }

    

    public <E> E demo1(E e){

        ....

        return e;

        }

    

    }

    

    3)泛型介面

    public interface Test<E>{

        .....

    }

    4)萬用字元 ?   如果不對?進行類型的限定,則可以傳遞Object或者其子類進入.(任意類都可以)

     ? extends E:代表只能傳遞進入E或者E的子類。

     ?  super  E:代表只能傳遞E或者E的父類。

     5)多重泛型

     ? extends E & interface名 & interface名1 ..... 代表E及其子類並實現了後面的介面的類。


   

JAVA泛型學習

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.