新手笔记: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()方法: 比较两个枚举类对象的引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值