JDK5特性

JDK1.5新特性:

1.自動裝箱與拆箱:

2.枚舉

3.靜態導入,如:import staticjava.lang.System.out

4.可變參數(Varargs

5.內省(Introspector),主要用於操作JavaBean中的屬性,通過getXxx/setXxx。一般的做法是通過類Introspector來獲取某個對象的BeanInfo信息,然後通過BeanInfo來獲取屬性的描述器(PropertyDescriptor),通過這個屬性描述器就可以獲取某個屬性對應的getter/setter方法,然後我們就可以通過反射機制來調用這些方法。

6.泛型(Generic)(包括通配類型/邊界類型等)

JDK5以前,對象保存到集合中就會失去其特性,取出時通常要程序員手工進行類型的強制轉換,這樣不可避免就會引發程序的一些安全性問題。

ArrayList list = new ArrayList();
list.add("abc");
Integer num = (Integer) list.get(0); // 運行時會出錯,但編碼時發現不了

JDK5中的泛型允許程序員在編寫集合代碼時,就限制集合的處理類型,從而把原來程序運行時可能發生問題,轉變爲編譯時的問題,以此提高程序的可讀性和穩定性(尤其在大型程序中更爲突出)。

泛型是提供給javac編譯器使用的,它用於限定集合的輸入類型,讓編譯器在源代碼級別上,即擋住向集合中插入非法數據。但編譯器編譯完帶有泛型的java程序後,生成的class文件中將不再帶有泛型信息,以此使程序運行效率不受到影響,這個過程稱之爲“擦除

使用泛型
使用泛型時,泛型類型須爲引用類型,不能是基本數據類型;
ArrayList<String> list = new ArrayList();
ArrayList list = new ArrayList<String>();   是正確的,但是在添加數據時編譯器沒有對類型進行校驗。
 

7.增強for循環

普通for循環

        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        for (int i=0;i<list.size();i++) {
            Integer a=list.get(i);
            System.out.println(a);
        }

迭代器

List<String> list=new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");

Iterator<String> it=list.iterator();
while(it.hasNext()){
  System.out.println(it.next));
}

增強for

       List list = new ArrayList();
       list.add(1);
       list.add(2);
       list.add(3);
       for (Object obj : list) {
           int i = (Integer) obj;
           System.out.println(i);
       }

8.註解 反射

9.協變返回類型:實際返回類型可以是要求的返回類型的一個子類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章