Java--泛型理解和使用 (List list = new ArrayList (); )


 List<String> list = new ArrayList<String>();

第一次看到這行代碼是一頭霧水,查了好久才弄清楚這是什么東西,怎么用,所以記錄下來,方便以后查閱。

 

首先看一段代碼

public class GenericTest {

    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("qqyumidi");
        list.add("corn");
        list.add(100);

        for (int i = 0; i < list.size(); i++) {
            String name = (String) list.get(i); 
            System.out.println("name:" + name);
        }
    }
}  

在這段代碼中,定義了一列表對象list,並在其中添加了兩個字符串和一個整形數據,在遍歷此列表讀取數據時,則需要首先將此列表轉型為字符串型才能夠輸出(紅色代碼),而且,我們也不知道此列表是什么類型的,這就造成了一些不必要的麻煩,而泛型就可以很好的解決這些問題。

看以下代碼:

public class GenericTest {

    public static void main(String[] args) {


        List<String> list = new ArrayList<String>();
        list.add("qqyumidi");
        list.add("corn");
        //list.add(100);   //此處會報錯,原因是在定義列表對象時就已經聲明了這是一個字符串類型的列表,所以不可以在里面添加整形的數據

        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i); 
            System.out.println("name:" + name);
        }
    }
}

 

上面這段代碼用泛型改寫(藍色代碼表示泛型寫法),其中<String>表示此列表是字符串型,因此,在循環中紅色代碼處,不需要再對列表進行強制轉型。這就是泛型。同理,類似的方法也可以應用到類和方法中,如下代碼所示:

 

public class GenericTest {

    public static void main(String[] args) {

        Box<String> name = new Box<String>("corn");
        System.out.println("name:" + name.getData());
    }

}

class Box<T> {

    private T data;

    public Box(T data) {
        this.data = data;
    }

    public T getData() {
        return data;
    }

}

其中,類Box定義時在其旁邊加了<T>,T表示此類的數據類型,T的作用相當於方法中的形參,等待被調用時輸入實參。  
在main函數中,將Sting類型傳入形參,此時,Box類就是String型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM