枚举
来源:互联网 发布:零售门店数据分析 编辑:程序博客网 时间:2024/06/05 00:32
一、枚举
1,为什么要有枚举
枚举就是要让莫个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这个目标。
2,用普通类定义枚举功能,
步骤:
1,私有构造方法;
2,每个元素分别用一个共有的静态成员变量表示;
3,可以有若干个公有方法或抽象方法,采用抽象方法定义next就将大量的false语句装换成了一个一个独立的类。
3,枚举的基本应用
枚举类型的常用方法
values:该方法可以将枚举类型成员以数组的形式返回;枚举类型名称.values();
valueOf:该方法可以是实现将普通字符串装换为枚举实例;枚举类型名称.valueOf();
compareTo:该方法用于比较两个枚举对象的定义时的顺序;枚举对象.compareTo();
ordinal:该方法用于得到枚举成员的位置索引;枚举对象.ordinal();
总结:枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象,例如:可以调用WeekDay.SUN.getClass().getName和WeekDay.class.getName()
二、枚举的高级使用
1,枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
2,枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面要有分号与其他成员分隔,如果把枚举整中的成员方法或变量等方法在枚举元素的前面,编译器会报错。
3,带构造方法的枚举
构造方法必须定义成私有的;如果有多个构造方法,该如何选择哪个构造方法?枚举源MON和MON()的效果一样,都是调用默认的构造方法。
代码示例:
public enum WeekDay{ SUN("星期天"),MON("星期一"),TUE(),WED(),THU(),FRI(),SAT();//空括号代表无参构造函数,也可以通过向构造函数中传递参数后 再向括号里传递参数 private WeekDay(){ System.out.println("First"); } private WeekDay(String day){ System.out.println("Secound"); }}
4,带方法的枚举
定义枚举TrafficLamp;
实现普通的next方法,实现抽象的next方法:
每个元素分别是由枚举类的子类来生成实例对象,这些子类采用类似内部类的方式进行定义;
增加上表示时间的构造方法。
代码示例:
public enum TrafficLamp{ RED(30){ public TrafficLamp nextLamp(){ return "GREEN"; } }, GREEN(40){ public TrafficLamp nextLamp(){ return "GREEN"; } }, YELLOW(10){ public TrafficLamp nextLamp(){ return "GREEN"; } }; public abstract TrafficLamp nextLamp(); private int time; private TrafficLamp(int time){ this.time = time; }}
5,枚举只有一个成员时,就可以作为一种单例的实现方法。
操作枚举成员的方式:
代码示例:
//方法一public enum WeekDay{ SUN("MON"),MON("TUE"),TUE("WED"),WED("THU"),THU("FRI"),FRI("SAT"),SAT("SUN"); private String next; private WeekDay(String next){ this.next = next; } public WeekDay nextDay(){ return WeekDay.valueOf(next); }}//方法二public enum WeekDay{ SUN{ public WeekDay nextDay(){ return "MON"; } }, MON{ public WeekDay nextDay(){ return "TUE"; } }, TUE{ public WeekDay nextDay(){ return "WED"; } }, WED{ public WeekDay nextDay(){ return "THU"; } }, THU{ public WeekDay nextDay(){ return "FRI"; } }, FRI{ public WeekDay nextDay(){ return "SAT"; } }, SAT{public WeekDay nextDay(){ return "SUN"; } }; public abstract WeekDay nextDay();}//方法三public enum WeekDay{ SUN.MON,TUE,WED,THU,FRI,SAT; public WeekDay nextDay(){ switch(this){ case SUN : return MON; case MON : return TUE; case TUE : return WED; case WED : return THU; case THU: return FRI; case FRI : return SAT; default : return SAT; } }
三、使用枚举类型的优势
枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。特点:
1,类型安全;
2,紧凑有效的数据定义;
3,可以和程序其他部分完成交互;
4,运行效率高;
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- SQL Server2008附加数据库之后显示为只读时解决方法
- 1007. To and Fro
- zend studio 11的debug调试方式
- 解决乱码,让Sublime Text 2支持GB2312和GBK
- trick words 1
- 枚举
- Win7下sublime text2加入右键菜单
- 修改file的文字
- 第218天
- NSDictionary转plist文件本地读与写
- 【一些题】机试?ASCII字符串转换成十六进制,大端与小端
- 通配符
- true--按了整数键, false--按了非整数键
- 【IOS编程 00】The Swift Programming Language