1. 程式人生 > >集合未使用泛型所出現的問題

集合未使用泛型所出現的問題

1.為什麼需要泛型

 

List list = new ArrayList();

list.add("My is none T");

list.add(100);

for (int i = 0; i < list.size(); i++) {

  String name = (String) list.get(i); //取出Integer時,執行時出現異常

  System.out.println("name:" + name);

}

 

如果不加泛型,List預設是Object,所以加一個String和Integer值是合法的,但是你在下面用的時候,忽略之前的相容,會出現ClassCastException。

 

2.泛型的好處

(1).型別的安全

泛型的主要目標是提高 Java 程式的型別安全。通過知道使用泛型定義的變數的型別限制,編譯器可以在一個高得多的程度上驗證型別假設。沒有泛型,這些假設就只存在於程式設計師的頭腦中(或者如果幸運的話,還存在於程式碼註釋中)。

(2).消除強制型別轉換。 

泛型的一個附帶好處是,消除原始碼中的許多強制型別轉換。這使得程式碼更加可讀,並且減少了出錯機會。

(3).潛在的效能收益。

泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制型別轉換(沒有泛型的話,程式設計師會指定這些強制型別轉換)插入生成的位元組碼中。但是更多型別資訊可用於編譯器這一事實,為未來版本的 JVM 的優化帶來可能。由於泛型的實現方式,支援泛型(幾乎)不需要 JVM 或類檔案更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制型別轉換)時所寫的程式碼,只是更能確保型別安全而已。

 

 

參考:http://blog.csdn.net/seu_calvin/article/details/52230032