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);
    }

  }
}




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