一、为什么要有枚举先看一个问题: 当要定义表示一个星期几的变量时, 该如何定义?假设有人用 1-7 分别表示周一至周日,但也有人可能用 0 表示周日。枚举的出现是为了让某个类型的变量的取值只能为若干个固定值中的一个, 否则编译器就会报错。枚举可以让编译器在编译时期就发现源程序中填写的非法值,而普通变量在开发阶段无法实现这个目标。首先,我们先试着用普通类模拟枚举,这样便于后面我们对枚举的理解二、用普通类模拟枚举的实现原理 1 )私有的构造方法; 2 )每个元素分别用一个公有的静态成员变量表示; 3 )可以有若干个公有方法或抽象方法。例1: [java] view plain copy 1. .itcast; 2. 3. public abstract class WeekDay1 { 4. // 构造方法私有,从而从外部新建 WeekDay1 对象 5. private WeekDay1(){} 6. /*********************************************************************** *************** 7. // 定义 7个表示星期的常量,且是 WeekDay1 类型 8. public final static WeekDay SUN=new WeekDay(); 9. public final static WeekDay MON=new WeekDay(); 10. public final static WeekDay TUE=new WeekDay(); 11. public final static WeekDay WEN=new WeekDay(); 12. public final static WeekDay THU=new WeekDay(); 13. public final static WeekDay FRI=new WeekDay(); 14. public final static WeekDay SAT=new WeekDay(); 15. 16. // 定义返回第二天的方法,利用 if...else 判断,麻烦 17. public WeekDay nextDay(){ 18. if(this==SUN) 19. return MON; 20. else if(this==MON) 21. return TUE; 22. else if(this==TUE) 23. return WEN; 24. else if(this==WEN) 25. return THU; 26. else if(this==THU) 27. return FRI; 28. else if(this==FRI) 29. return SAT; 30. else 31. return SUN; 32. } 33. // 复写 toString 方法,利用 if...else 判断,麻烦 34. public String toString(){ 35. if(this==SUN) 36. return "SUN"; 37. else if(this==MON) 38. return "MON"; 39. else if(this==TUE) 40. return "TU
黑马程序员-java枚举总结 来自淘豆网m.daumloan.com转载请标明出处.