程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2SE >> 在Eclipse 3.1中體驗J2SE 5.0的新特性: 第一部分 :枚舉類型(7)

在Eclipse 3.1中體驗J2SE 5.0的新特性: 第一部分 :枚舉類型(7)

編輯:J2SE

1.3.5 特定於常量的類主體

在上一節裡提到枚舉類型可以定義自己的函數,其實更進一步,枚舉類型的每一個值 都可以實現枚舉類型裡定義的抽象函數,這聽起來很不可思議,我們可以先看下面的例子 .

public enum Priority implements Feature {
  High (38) {
     public void perform() {
       System.out.println("high 38");
     }
   },
   Medium(36.5) {
     public void perform() {
       System.out.println("medium 36.5");
     }
   },
   Low (5.2){
     public void perform() {
       System.out.println("low 5.2");
     }
   };
   public abstract void perform();
   public String getDescription(Priority p) {
     return null;
   }
}

枚舉類型Priority 定義了一個抽象函數perform(),Priority的每一個值都對perform 函數實現了重載,這就是枚舉類型的特定於常量的類主體.在這種情況下,每聲明一個值 ,枚舉類型的一個子類生成,然後生成這個子類的唯一的實例來表示這個值.不同的值, 就有對應的不同的子類.每個子類可以對父類的抽象函數進行重載.我們可以用下面的程序 在Eclipse3.1環境中運行來證明此時3個子類生成.

public class Task {
   Priority myPriority;
public Task (Priority p) {
     myPriority=p;
}
public Priority getPriority(){
   return myPriority;
}
public void test() throws IOException {
   if (myPriority == Priority.High)
        System.out.println(Priority.High.getClass().getName());
      if (myPriority == Priority.Medium)
        System.out.println(Priority.Medium.getClass().getName());
    if (myPriority == Priority.Low)
        System.out.println(Priority.Low.getClass().getName());
}}
public class TestSwitch {
   public static void main(String[] args) {
     Task task = new Task(Priority.High);
   Task task1 = new Task(Priority.Medium);
   Task task2 = new Task(Priority.Low);
   try {
   task.test();
   task1.test();
   task2.test();
   } catch (IOException e) {
   e.printStackTrace();
   }
   }

運行結果如下圖10.

圖9 測試特定於常量的類主體運行結果

由於特定於常量的類主體難理解容易出錯,它的應用比較少,大多數情況下可以用 switch-case 語句替代. 在這裡簡單介紹,僅供參考.

1.4 枚舉類型的小結

使用枚舉類型是很簡單的.它定義一個固定的、封閉的值集合,然後,在需要這些值中 的某一個值時,可以通過它的名稱來指定它,這就是枚舉類型的簡單性.枚舉類型的值就 是枚舉類型的實例,編譯器會確保沒有傳入其他的類型,這就是枚舉類型的安全性.這些 枚舉類型就是類本身,因此,可以對類進行的所有操作同樣可以作用於枚舉類型上.我們 要小心使用構造函數和函數重載方法,不要因為這些特性可用就任意使用它們.比如特定 於常量的類主體,大多情況下可以用Switch語句來代替,更容易讓人理解而且不容易出錯 .我們也看到了Eclipse 3.1平台對枚舉類型的支持,包括提供創建模板,錯誤信息提示等 .總之,枚舉類型的靈活應用能極大的方便和簡化了我們的開發工作.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved