A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 姜胜凯 于 2014-1-20 20:41 编辑

一、枚举出现的意义
问题:假设要定义星期几或者性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写
成int weekday = 0;
所以,枚举的出现就是要让某个类型的变量的取值只能为若干个固定值的一个,否则,编译器就会报错。枚举
可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
总结:枚举就相当于是一个类,其中也可以定义构造方法、成员变量、普通方法、和抽象方法。
注意:枚举的元素必须位于枚举体中的最开始部分,枚举元素列表后面要有分号与其他成员分隔。把枚举
       中的成员方法或变量放在枚举元素的前面,编译器会报告错误。
       当枚举中只有一个成员时,就可以看作一种单例的实现方式。
二、枚举的基本应用
1.常用方法
   int compareTo(E o):比较枚举与指定对象的顺序。
   boolean equals(Object other):比较指定的对象是否等于此枚举常量
   String name():返回此枚举常量的名称,在其枚举声明中对其进行声明。
   int ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
   String toString():返回枚举常量的名称,它包含在声明中
2.枚举的应用举例
  public enum Weekday{
   SUN,MON,TUE,WED,THI,FRI,SAT
}
三、枚举扩展应用
1.带有构造方法的枚举
--构造方法必须定义为私有,并必须写在枚举中元素的下面,元素用分号结束.枚举元素后隐藏一个默认的
  “()”。
--如果有多个构造方法,则需在枚举中元素的后面用"(参数)"标清调用那个构造方法。
例:
public enum Weekday{
   SUN(1),MON(14),TUE(),WED,THI,FRI,SAT;
   private Weekday(){}
   private Weekday(int day){}
}
2.带方法的枚举
如果枚举中带有抽象方法,那么枚举中的元素必须生成其子类的对象覆盖此枚举的抽象方法。
public enum Weekday{
  SUN{
    public Weekday nextDay{
       return MON;
    }
  },
  MON{
    public Weekday nextDay{
     return SUN;
  };
  public abstract nextDay();
}

评分

参与人数 1技术分 +5 收起 理由
船长 + 5

查看全部评分

3 个回复

倒序浏览
受教了! 枚举的7中用法给个网址做补充吧!已有前人做了总结:http://softbeta.iteye.com/blog/1185573

评分

参与人数 1技术分 +2 收起 理由
船长 + 2

查看全部评分

回复 使用道具 举报
谢谢分享!
回复 使用道具 举报
抢个沙发,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马