Java的枚舉類型

/*!
 * Java中的枚舉類型也是類,
 * Java中的類都隱含從Object
 * 派生,Java中的枚舉類型都
 * 隱含從Enum類派生
 * Java的枚舉類型一般都是全部大寫
 *
 * SMALL,MEDIUM,LARGE..
 * 都可以看成是其中一個枚舉類型的
 * 實例
 *
 * Java Class反射類型,得到類型對象Class
 * 1.<classname>.class
 * 2.Class.forName(<classname>)
 * 3.<instance>.getClass()
 *
 * Java類型轉換
 * BaseClass bc = new DerivedClass();
 * DerivedClass dc = (DerivedClass)bc;
 * 更加健壯的做法:
 * if(bc instanceof DerivedClass){
 *   Java中的類型轉換相當於C++
 *   中的dynamic_cast
 *   DerivedClass dc = (DerivedClass)bc;  
 * }
 */

enum Size{
  /*!Java的枚舉類型的值,相當於默認定義的
   * 實例的值,並且建議該值放到class文件的最前面*/

  SMALL,
  MEDIUM,
  LARGE,
  EXTRA_LARGE;
}

enum Sex{
  /*! 這裏就需要構造函數來構造了*/
  MALE("m"),
  FEMALE("f");

  /*!性別的縮寫*/
  private String abbr;

  /*!要特別注意的是枚舉類型的構造函數必須是private
   * 是爲了保證枚舉類型的有限性
   */
  private Sex(String abbr) {this.abbr = abbr;}
  public String getAbbrevation() { return abbr;}
}

public class JavaEnums{
  public static void main(String[] args){
    //將枚舉類型的實例toString 轉換成字符串
    System.out.println("Small=" + Size.SMALL.toString());
    System.out.println("Medium=" + Size.MEDIUM.toString());

    //將枚舉類型的字符串通過Enum.valueOf轉換成枚舉類型
    System.out.println("Small=" + Enum.valueOf(Size.class, "SMALL"));
    System.out.println("Large=" + Enum.valueOf(Size.class, "LARGE"));

    //將枚舉類型直接定義成類類型的
    System.out.println("Male=" + Sex.MALE.toString());
    System.out.println("Female=" + Sex.FEMALE.toString());

    System.out.println("Male(Abbr)=" + Sex.MALE.getAbbrevation());
    System.out.println("Female(Abbr)=" + Sex.FEMALE.getAbbrevation());

    //這裏valueOf指定的是實例的名稱
    System.out.println("Male=" + Enum.valueOf(Sex.class, "MALE"));
    System.out.println("Female=" + Enum.valueOf(Sex.class, "FEMALE"));

    //遍歷枚舉類型中的所有數據
    Size[] sizes = Size.values();
    Sex[] sexs = Sex.values();

    System.out.println("sizes=");
    for(Size s : sizes){
      System.out.println("s = " + s);
    }

    System.out.println("sexs=");
    for(Sex s : sexs){
      System.out.println("sex=" + s);
    }

  }
}




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