枚举(pascal) 随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型。
在没有使用枚举之前,我们可能会这样来定义变量:
private static final int GIRL = 0;
private static final int BOY= 1;
这样一种实现的方式,看似好像很清晰,但是如果类型一多,类型的值就较难管理,而且在判断不同类型时,有较多的丑陋的代码,代码自然不够优雅。
下面来看下如何使用枚举。
可以这样来定义:
public enum GenderType {
Girl, Boy
}
利用枚举传递值:
public void updateGrade(long userId,GenderType gender);
这样传递的好处是,可以是参数的传入一定是正确的,是真实存在的类型值。 递归枚举:
for (GenderType g : GenderType.values()) {
System.out.println(g.name()); //得到枚举的名字
System.out.println(g.ordinal()); //得到枚举的序号
}
枚举和switch:
for (GenderType g : GenderType.values()) {
System.out.println(g.name());
System.out.println(g.ordinal());
switch(g){
case Girl:
break;
case Man:
break;
}
}
比如:表示层传递参数值0,进入控制层,如何使用枚举呢?
if(GenderType.values().length>i){
GenderType.values() //这样就得到了枚举类型
}
如果传递的是字符串”Girl”,就可以这样得到数据枚举:
GenderType.valueOf("Girl")
|