本文將介紹J
SE
中三個比較重要的特性
枚舉類型
注釋類型
范型
並在此基礎上介紹在如何在Eclipse
開發環境中開發枚舉類型
注釋類型和范型應用
J
SE
(Tiger)的發布是Java語言發展史上的一個重要的裡程碑
是迄今為止在 Java 編程方面所取得的最大進步
J
SE
提供了很多令人激動的特性
這些特性包括范型(generics)的支持
枚舉類型(enumeration)的支持
元數據(metadata)的支持
自動拆箱(unboxing)/裝箱(autoboxing)
可變個數參數(varargs)
靜態導入(static imports)
以及新的線程架構(Thread framework)
隨著J
SE
的推出
越來越多的集成開發環境(IDE)支持J
SE
的開發
著名的開源Java IDE Eclipse從
M
開始支持J
SE
的開發
目前最新的版本是
RC
本系列將介紹J
SE
中三個比較重要的特性
枚舉類型
注釋類型
范型
並在此基礎上介紹在如何在Eclipse
開發環境中開發枚舉類型
注釋類型和范型應用
本文將介紹范型
范型 范型(Generics)簡介
J
SE
中的最顯著的變化之一是添加對泛型類型的支持
在J
SE
以及之前的版本中
Java程序並不是類型安全的
例如
Collection framework中定義的List
Map等容器類的元素都是Object類型
即這個類包含的元素是Object對象
使用這種方式實現的列表
可以用來操作整數
實數
字符串或者任何對象類型
例如
清單
類型不安全的代碼示例
List stringList = new ArrayList();
stringList
add(
abcde
);
String str = (String)stringList
get(
);
這種方法實現的列表需要使用強制類型轉換(又稱顯示造型)
因此不是類型安全的
在上面這段代碼種
雖然變量名為stringList
但是我們仍然可以把一個整型對象添加到這個隊列中
例如
清單
類型不安全的代碼示例
stringList
add(new Integer(
));
在這種情況下
從字符列表中獲取對象時
強制類型轉換就會導致運行時異常
清單
類型不安全的代碼示例
String str = (String)stringList
get(
); //runtime exception
范型是Java邁向類型安全的一個重要步驟
使用范型可以構造出類型安全的代碼
聲明范型
所謂范型是指類型參數化(parameterized types)
Java是一種強類型的語言
在J
SE
以及以前的版本中
我們在定義一個Java類
接口或者方法的時候
必須指定變量的類型
在聲明范型類
接口或者函數時
定義變量的時候不指定某些變量的具體類型
而是用一個類型參數代替
在使用這個類
接口
或者方法的時候
這個類型參數由一個具體類型所代替
范型類
下面的例子中介紹了如何創建一個最簡單范型類
清單
最簡單的范型類
public class GenSample {}
類名後面帶有表明了這個類是范型類
其中T被成為類型參數(type parameter)
在使用范型的時候
類型參數可以被替換為任何的類類型
但是不能是原始類型(primitive type)
例如int
double
下面通過一個列表的例子來具體說明如果聲明范型類和類型參數的用法
清單
范型列表
public class GenList {
private T[] elements;
private int size =
;
private int length =
;
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
)
elements[length++] = e;
}
}
在列表的例子中
類型參數T被用來表示列表中的元素的類型
即這個列表中的元素是T類型的
在使用這個列表時
這個類型參數T會被具體的類型所替代
注意
由於T時類型參數不是具體的類
所以不能使用new操作符創建T的對象
例如new T()
或者
new T[
]
范型接口
在J
SE
中
不僅僅可以聲明范型類
也可以聲明范型接口
聲明范型接口和聲明范型類的語法類似
也是在接口命稱後面加上
例如
清單
范型接口
public interface GenInterface {
void func(T t);
}
聲明多個類型參數的范型類或者接口清
在聲明范型類的時候
可是使用多個類型參數
多個類型參數之間用逗號分開
例如
清單
多個類型參數的范型類
public class GenMap {}
Eclipse
的類創建向導支持創建范型類
如下圖所示
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28522.html