1. 程式人生 > >effective_java第23條:請不要新程式碼中使用原生態型別

effective_java第23條:請不要新程式碼中使用原生態型別

從這條開始涉及泛型相關的點。

  從JDK5開始Java新增了“泛型”新特性,例如:List<String>,在這之前則只有List不會限定型別。

  如今的JDK版本中還是可以寫原生型別,但這會帶來隱藏的不安全問題。如果在宣告一個列表變數時不使用泛型而使用原生型別,如下:

複製程式碼
public class Main {
    public static void main(String[] args) throws Exception{
        List list = new ArrayList();
        list.add("hello");
        list.add(2);
    }
}
複製程式碼

  可以看到可以插入任意型別的資料。如果使用泛型:  

複製程式碼
public class Main {
    public static void main(String[] args) throws Exception{
        List<String> list = new ArrayList<String>();
        list.add("hello");
        //list.add(2);  //編譯期就會出錯
    }
}
複製程式碼

  簡而言之,使用泛型相對“安全”,從一開始就能限定資料型別,防止之後不小心插入了錯誤的型別,而對於原生態型別則不會檢查插入的型別,有可能在以後插入了其他型別而只有在執行時才丟擲異常,所以鼓勵使用泛型。

  另外書中提到了“?”萬用字元和“<Object>”之間的區別,可參考《Java中的Object,T(泛型),?區別》