枚举类型

来源:互联网 发布:数据库的储存过程 编辑:程序博客网 时间:2024/05/29 23:24

这是Java SE5中添加的一个新特性,enum关键字

表示以前编写代码的时候从来没有用过。。。但感觉这东西应该挺方便的,比如需要创建一个常量集的时候,看一个书上的例子

public class Test {public static void main(String[] args) {for(Spiciness s : Spiciness.values()){System.out.println(s + ", ordinal " + s.ordinal());}}}enum Spiciness{NOT, MILD, MEDIUM, HOT,FLAMING}
输出结果为

NOT, ordinal 0MILD, ordinal 1MEDIUM, ordinal 2HOT, ordinal 3FLAMING, ordinal 4
这里面的Spiciness就是一个常量的集合,很像一个数组Spiciness.values()返回的就是一个组数,s.ordinal()表示其中的位置,类似数组下标也是从0开始。如果一定要用下标取值的话就用Spiciness.values()[1]类似这样来用,不过有点多余

尽管enum看起来像是一种新的数据类型,但是这个关键字只是为enum生成对应的类时,产生某些编译器行为,因此在很大程度上,可以将enum当做其他任何数据类型来处理。事实上enum确实是类,并且有自己的方法。

下面这个例子比较有意思,enum可以在switch语句内使用

public class Test {public static void main(String[] args) {describe(Spiciness.HOT);}public static void describe(Spiciness s){int index = 0;switch (s) {case NOT:break;case MILD:index = 1;break;case MEDIUM:index = 2;break;case HOT:index = 3;break;case FLAMING:index = 4;break;default:index = 5;break;}System.out.println("index: " + index);System.out.println(Spiciness.values()[index]);}}enum Spiciness{NOT, MILD, MEDIUM, HOT,FLAMING}

输出结果为

index: 3HOT
由于switch是要在有限的可能值集合中进行选择,因此它与enum是绝佳的组合。






0 0
原创粉丝点击