国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在Eclipse 3.1中體驗J2SE 5.0的新特性:第三部分:范型

2019-11-18 14:56:56
字體:
來源:轉載
供稿:網友
本文將介紹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對象. 使用這種方式實現的列表, 可以用來操作整數, 實數, 字符串或者任何對象類型. 例如

清單3.1.1 類型不安全的代碼示例
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 {}

類名后面帶有表明了這個類是范型類, 其中T被成為類型參數(type parameter), 在使用范型的時候, 類型參數可以被替換為任何的類類型, 但是不能是原始類型(PRimitive type), 例如int, double.

下面通過一個列表的例子來具體說明假如聲明范型類和類型參數的用法.

清單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].



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平乡县| 休宁县| 津南区| 石台县| 汪清县| 辽阳县| 珠海市| 新闻| 平安县| 东乡族自治县| 林芝县| 青田县| 怀安县| 霍山县| 德阳市| 堆龙德庆县| 墨玉县| 呼和浩特市| 万山特区| 金门县| 许昌县| 郎溪县| 沙田区| 从江县| 长葛市| 库车县| 邹平县| 塘沽区| 眉山市| 韩城市| 枣强县| 承德县| 安达市| 东莞市| 鹤庆县| 奉新县| 孟州市| 加查县| 南江县| 锡林郭勒盟| 屏边|