在开发过程中,有些变量值有多个状态,但是每个状态都是明确已知的。比如星期,它的值固定只有周一、周二、周三等七天。而为了方便开发,可以把所有的固定值放在枚举里面,根据需求提取特定的值就行了,这就提升代码的简洁度。
简单调用方法//定义
class enum Week{
MON,TUS,WED,THU,FRI,SAT,SUN
}
//调用
System.out.println(Week.MON);
//获取当前类型在枚举里面的排序
System.out.println(Week.MON.ordinal());
结果:
MON
0
这个是最简单的用法。枚举类会根据枚举值得排序,从头到尾赋值为0到N。
但是这种写法却存在一种弊端。
我们看一下下面这个例子:
//定义
class enum Num{
ZERO,ONE,TWO,TREE,FOUR
}
//调用,给对应的变量赋值
int ZERO = Week.ZERO.ordinal();
int ONE= Week.ONE.ordinal();
int TWO= Week.TWO.ordinal();
int TREE= Week.TREE.ordinal();
int FOUR= Week.FOUR.ordinal();
如果由于业务需要,需要增加FIVE。如果这时候不小心把FIVE插入到ONE和TWO中间,就会导致代码中TWO、TREE、FOUR变量赋值出现错误。结果为TWO=3,TREE=4,FOUR=5。
所以,这种简单的固定写法,在实际开发中并不推荐使用。
进阶调用方法public enum Num{
ZERO(0),ONE(1),TWO(2),TREE(3),FOUR(4);
//指定赋值类型为int
private int num;
Num(int num){
this.num = num;
}
public int getNum() {
return num;
}
}
//调用
System.out.println(Num.ZERO.getNum());
结果:
0
通过以上方法,就可以让枚举值指定特定的数值和类型。
当然也可以给枚举赋值为String类型。
public enum Num{
ZERO("零"),ONE("一"),TWO("二"),TREE("三"),FOUR("四");
//指定赋值类型为int
private String num;
Num(String num){
this.num = num;
}
public String getNum() {
return num;
}
}
//调用
System.out.println(Num.ZERO.getNum());
//结果
零



