本帖最后由 姜胜凯 于 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();
} |