A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 上篮高手 中级黑马   /  2013-10-18 10:27  /  1156 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

枚举(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")












评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
枚举的解释挺好的,顶下
回复 使用道具 举报
张俊生 发表于 2013-10-18 11:04
枚举的解释挺好的,顶下

O(∩_∩)O谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马