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

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

編輯:J2SE

另外要強調 的兩點: 一是這些枚舉類型的構造函數都是私有的.它是不能被其它的類或者其它的枚舉 類型調用的. 而且這個私有修飾符是由編譯器自動加的,如果我們定義這些構造函數時,在 前面加上public 修飾符, 就會導致編譯錯誤, 如下圖5所示. 二是變量定義必須在枚舉類 型值定義之後. 上圖中double temperature 必須在枚舉類型值定義完了(分號表示枚舉類 型值定義完了, 如 Low(5.2);) 才能聲明.

圖4. 枚舉類型的構造函數是私有的

在J2SE 5.0以前,當我們實現一個枚舉類時,一般都是把一個整數關聯到此枚舉類的 某一個值的名字,出現的問題是同一個整數可以代表不同枚舉類的值. 下面的例子裡定義 兩個枚舉類 Course and Grade 如下:

清單4.

public class Course {
   public static final int EnglishLit    = 1;
   public static final int Calculus     = 2;
   public static final int MusicTheory   = 3;
   public static final int MusicPerformance = 4;
  }
public class Grade {
  public static final int A = 1;
  public static final int B = 2;
  public static final int C = 3;
  public static final int D = 4;
  public static final int F = 5;
  public static final int INCOMPLETE = 6;
}

如果開發者誤把student1.assignGrade(Grade.A)寫成student1.assignGrade (Course.EnglishList); 在編譯 階段是不能發現問題的,如果用J2SE 5.0 枚舉類型 (enum)可以避免這些問題.

枚舉類型每一個值都是public, static and final的.也就是說,這些值是唯一的而且 一旦定義了是不能被重寫或修改.而且盡管在枚舉類型每一個值聲明時沒有出現static關 鍵字, 實際上值都是靜態的, 而且我們不能在值前面加上static, public,final 修飾 符,否則就會出現下圖 6的錯誤.

圖5 枚舉類型值的錯誤聲明

枚舉類型都實現了Java.lang.Comparable,枚舉類型的值是可以比較排序的, 排列順序就是枚舉類型定義這些值的順序.

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