本文將介紹J2SE 5.0中三個比較重要的特性: 枚舉類型, 注釋類型, 范型, 并在此基礎上介紹在如何在Eclipse 3.1開發環境中開發枚舉類型, 注釋類型和范型應用。
J2SE 5.0 (Tiger)的發布是java語言發展史上的一個重要的里程碑, 是迄今為止在 Java 編程方面所取得的最大進步。
J2SE 5.0提供了很多令人激動的特性。這些特性包括范型(generics)的支持, 枚舉類型(enumeration)的支持, 元數據(metadata)的支持, 自動拆箱(unboxing)/裝箱(autoboxing), 可變個數參數(varargs), 靜態導入(static imports), 以及新的線程架構(Thread framework)。
隨著J2SE 5.0的推出, 越來越多的集成開發環境(IDE)支持J2SE 5.0的開發。 聞名的開源Java IDE Eclipse從3.1M4開始支持J2SE 5.0的開發, 目前最新的版本是3.1RC4。
本系列將介紹J2SE 5.0中三個比較重要的特性: 枚舉類型, 注釋類型, 范型, 并在此基礎上介紹在如何在Eclipse 3.1開發環境中開發枚舉類型, 注釋類型和范型應用。本文將介紹范型。
3. 范型
3.1范型(Generics)簡介
J2SE 5.0中的最顯著的變化之一是添加對泛型類型的支持. 在J2SE 1.4 以及之前的版本中, Java程序并不是類型安全的. 例如, Collection framework中定義的List, Map等容器類的元素都是Object類型, 即這個類包含的元素是Object對象. 使用這種方式實現的列表, 可以用來操作整數, 實數, 字符串或者任何對象類型. 例如
List stringList = new ArrayList();stringList.add("abcde");String str = (String)stringList.get(0);這種方法實現的列表需要使用強制類型轉換(又稱顯示造型), 因此不是類型安全的. 在上面這段代碼種, 雖然變量名為stringList, 但是我們仍然可以把一個整型對象添加到這個隊列中, 例如,
清單3.1.2 類型不安全的代碼示例stringList.add(new Integer(5));在這種情況下, 從字符列表中獲取對象時, 強制類型轉換就會導致運行時異常.
清單3.1.3 類型不安全的代碼示例String str = (String)stringList.get(1); //runtime exception范型是Java邁向類型安全的一個重要步驟, 使用范型可以構造出類型安全的代碼.
3.2聲明范型
所謂范型是指類型參數化(parameterized types). Java是一種強類型的語言, 在J2SE 1.4以及以前的版本中, 我們在定義一個Java類, 接口或者方法的時候, 必須指定變量的類型. 在聲明范型類、接口或者函數時, 定義變量的時候不指定某些變量的具體類型, 而是用一個類型參數代替. 在使用這個類, 接口, 或者方法的時候, 這個類型參數由一個具體類型所代替.
3.2.1 范型類
下面的例子中介紹了如何創建一個最簡單范型類
清單3.2.1, 最簡單的范型類public class GenSample {} 類名后面帶有
下面通過一個列表的例子來具體說明假如聲明范型類和類型參數的用法.
清單3.2.2, 范型列表public class GenList { private T[] elements; private int size = 0; private int length = 0; public GenList(int size) { elements = (T[])new Object[size]; this.size = size; } public T get(int i) { if (i < length) { return elements[i]; } return null; } public void add(T e) { if (length < size - 1) elements[length++] = e; }} 在列表的例子中, 類型參數T被用來表示列表中的元素的類型, 即, 這個列表中的元素是T類型的.
在使用這個列表時, 這個類型參數T會被具體的類型所替代.
注重, 由于T時類型參數不是具體的類, 所以不能使用new操作符創建T的對象,例如new T(), 或者, new T[10].
新聞熱點
疑難解答