新手筆記:enum關鍵字的使用

先看例子:
<pre name="code" class="java">package EnumTest;


enum enumTest // 枚舉類型與class用法類似
{
  Mon ( 1 , "Monday" ) , Tue ( 2 , "Tuesday" ) , Wed ( 3 , "Wednesday" ) , Thu (
      4 , "Thursday" ) , Fri ( 5 , "Friday" ) , Sat ( 6 , "Saturday" ) , Sun (
      7 , "Sunday" );
  private int intDay;
  private String strDay;

  public void setStrDay ( String strDay )
  {
    this.strDay = strDay;
  }

  public String getStrDay ( )
  {
    return strDay;
  }

  public void setIntDay ( int intDay )
  {
    this.intDay = intDay;
  }

  public int getIntDay ( )
  {
    return intDay;
  }

  private enumTest ( int i , String day ) // 必須有一個只含參的構造方法
  {
    this.setStrDay( day );
    this.setIntDay( i );
  }

  public static void printDay ()
  {
    for ( enumTest i : enumTest.values( ) )
    {
      switch ( i.getIntDay( ) )
      {
      case 1 :
        System.out.println( enumTest.Mon );
        break;
      case 2 :
        System.out.println( enumTest.Tue );
        break;
      case 3 :
        System.out.println( enumTest.Wed );
        break;
      case 4 :
        System.out.println( enumTest.Thu );
        break;
      case 5 :
        System.out.println( enumTest.Fri );
        break;
      case 6 :
        System.out.println( enumTest.Sat );
        break;
      case 7 :
        System.out.println( enumTest.Sun );
        break;
      default :
        System.out.println( "wrong number!" );
      }
    }
    enumTest et = enumTest.Fri;
    System.out.println( "本枚舉所在循序爲:" + et.ordinal( ) );
  }

  public static void main ( String[ ] args )
  {
    printDay( );
  }

}



運行結果爲:

Mon
Tue
Wed
Thu
Fri
Sat
Sun<pre name="code" class="plain">本枚舉所在循序爲:4

實際上,enum聲明的就是一個類,jvm將enum類型的聲明也編譯爲enumTest.class。 而這些類都是類庫中Enum類的子類(java.lang.Enum<E>)。它們繼承了這個Enum中的許多有用的方法。

枚舉類的類型爲public final,定義的枚舉變量的類型爲public static final 

枚舉類的聲明必須定義構造方法,使用private修飾。這樣可以保證外部代碼無法新構造枚舉類的實例。一般一個枚舉中有幾個參數,就定義幾個需要封裝的變量。枚舉類的方法和數據域可以允許外部訪問。

枚舉可以繼承的方法:

  1. ordinal()方法: 返回枚舉值在枚舉類種的順序。這個順序根據枚舉值聲明的順序而定。
  2. compareTo()方法: Enum實現了java.lang.Comparable接口,因此可以比較象與指定對象的順序。Enum中的compareTo返回的是兩個枚舉值的順序之差。當然,前提是兩個枚舉值必須屬於同一個枚舉類,否則會拋出ClassCastException()異常。(具體可見源代碼)
  3. values()方法: 靜態方法,返回一個包含全部枚舉值的數組。
  4. toString()方法: 返回枚舉常量的名稱。
  5. valueOf()方法: 這個方法和toString方法是相對應的,返回帶指定名稱的指定枚舉類型的枚舉常量。
  6. equals()方法: 比較兩個枚舉類對象的引用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章