概念:枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。
在Java中使用enum关键字来声明枚举类,枚举类通常用来实现接口,枚举中不同的对象可以以不同的方式实现接口中声明的方法。
enum 类型提出给 JAVA 编程带了了极大的便利,让程序的控制更加的容易,也不容易出现错误。所以在遇到需要控制程序流程时候,可以多想想是否可以利用 enum 来实现。
使用enum需要注意:
- 1.它不能有public的构造函数。构造函数要声明成private或friendly。
- 2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
- 3.enum默认实现了java.lang.Comparable接口。
- 4.enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.
- 5.enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
- 6.enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
- 7.enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。
1 | interface Inte{ |
枚举使程序更加灵活,同样也不容易出错。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 定义一周七天的枚举类型
public enum WeekDayEnum { Mon, Tue, Wed, Thu, Fri, Sat, Sun }
// 读取当天的信息
WeekDayEnum today = readToday();
// 根据日期来选择进行活动
switch(today) {
Mon: do something; break;
Tue: do something; break;
Wed: do something; break;
Thu: do something; break;
Fri: do something; break;
Sat: play sports game; break;
Sun: have a rest; break;
}