?? enumtype.java
字號:
package book.j2se5;
/**
* J2SE 5.0的枚舉類型
* Enum作為Sun全新引進的一個關鍵字,看起來很象是特殊的class, 它也可以有自己的變量,
* 可以定義自己的方法,可以實現一個或者多個接口。具有如下特點:
* (1)不能有public的構造函數,這樣做可以保證客戶代碼沒有辦法新建一個enum的實例。
* (2)所有枚舉值都是public , static , final的。注意這一點只是針對于枚舉值,
* 可以和在普通類里面定義變量一樣定義其它任何類型的非枚舉變量,這些變量可以用任何修飾符。
* (3)變量和方法定義必須放在所有枚舉值定義的后面。
*/
public class EnumType {
/**
* 人Person的枚舉類型
*/
enum Person{
CHINESE, // 中國人
AMERICAN, // 美國人
ENGLISHMAN;// 英國人
}
public static void main(String[] args) {
System.out.println("Person枚舉值的數目:" + Person.values().length);
// 遍歷枚舉類型中所有的值
System.out.println("Person枚舉值如下:");
Person[] ps = Person.values();
for (Person p : ps){
System.out.print(p + " ");
}
System.out.println();
Person p = Person.CHINESE;
// 比較枚舉值
if (p == Person.CHINESE){
System.out.println("p'value equals Person.CHINESE");
}
// 使用valueOf獲得字符串描述的枚舉值
p = Person.valueOf("AMERICAN");
// 在Switch中使用枚舉值
switch(p){
case CHINESE:
System.out.println("p is Chinese");
break;
case AMERICAN:
System.out.println("p is American");
break;
case ENGLISHMAN:
System.out.println("p is Englishman");
break;
}
// 取得枚舉值在枚舉類型中聲明的順序
System.out.println("AMERICAN的序號:" + Person.AMERICAN.ordinal());
System.out.println("CHINESE的序號:" + Person.CHINESE.ordinal());
System.out.println("ENGLISHMAN的序號:" + Person.ENGLISHMAN.ordinal());
System.out.println();
// 使用更復雜的枚舉類型ComplexPerson
ComplexPerson cp = ComplexPerson.CHINESE;
// 因為為CHINESE枚舉值覆蓋了toString方法,所以調用的是CHINESE的toString方法
System.out.println("cp.toString(): "+ cp);
cp = ComplexPerson.AMERICAN;
// 因為沒有為AMERICAN枚舉值覆蓋toString方法,所以調用默認的toString方法
System.out.println("cp.toString(): "+ cp);
// 調用枚舉值的方法
cp = ComplexPerson.OTHER;
System.out.println("cp.getValue(): "+ cp.getValue());
}
/**
* 一個更加復雜的枚舉類型
*/
enum ComplexPerson{
// 枚舉值
// CHINESE的value屬性為"中國人"
CHINESE("中國人"){
public String toString(){
return "這是個中國人";
}},
AMERICAN("美國人"),
ENGLISHMAN("英國人"){
public String toString(){
return "這是個英國人";
}},
OTHER{
public String toString(){
return "這是個其他國家的人";
}};
// 枚舉值的value屬性,只能聲明在枚舉值的后面
private String value = null;
// 默認構造方法
ComplexPerson(){
value = "其他人";
}
// 帶參數的構造方法
ComplexPerson(String value){
this.value = value;
}
// 獲取value屬性
public String getValue(){
return this.value;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -