一文搞懂JAVA 枚举(enum)
Java枚举是一个特殊的类,一般表示一组常量,比如一年的4个季节,一个年的12个月份,一个星期的7天,方向有东南西北等。
Java枚举类使用enum关键字来定义,各个常量使用逗号,来分割。
例如定义一个颜色的枚举类。
enumColor { RED,GREEN,BLUE; }
以上枚举类Color颜色常量有RED,GREEN,BLUE,分别表示红色,绿色,蓝色。
使用实例:
enumColor { RED,GREEN,BLUE; } publicclassTest { //执行输出结果 publicstaticvoidmain(String[]args) { Colorc1=Color.RED; System.out.println(c1); } }
执行以上代码输出结果为:
RED
内部类中使用枚举
枚举类也可以声明在内部类中:
publicclassTest { enumColor { RED,GREEN,BLUE; } //执行输出结果 publicstaticvoidmain(String[]args) { Colorc1=Color.RED; System.out.println(c1); } }
执行以上代码输出结果为:
RED
每个枚举都是通过Class在内部实现的,且所有的枚举值都是publicstaticfinal的。
以上的枚举类Color转化在内部类实现:
classColor { publicstaticfinalColorRED=newColor(); publicstaticfinalColorBLUE=newColor(); publicstaticfinalColorGREEN=newColor(); }
迭代枚举元素
可以使用for语句来迭代枚举元素:
enumColor { RED,GREEN,BLUE; } publicclassMyClass{ publicstaticvoidmain(String[]args){ for(ColormyVar:Color.values()){ System.out.println(myVar); } } }
执行以上代码输出结果为:
RED
GREEN
BLUE
在switch中使用枚举类
枚举类常应用于switch语句中:
enumColor { RED,GREEN,BLUE; } publicclassMyClass{ publicstaticvoidmain(String[]args){ ColormyVar=Color.BLUE; switch(myVar){ caseRED: System.out.println("红色"); break; caseGREEN: System.out.println("绿色"); break; caseBLUE: System.out.println("蓝色"); break; } } }
执行以上代码输出结果为:
蓝色
values(),ordinal()和valueOf()方法
enum定义的枚举类默认继承了java.lang.Enum类,并实现了java.lang.Seriablizable和java.lang.Comparable两个接口。
values(),ordinal()和valueOf()方法位于java.lang.Enum类中:
- values()返回枚举类中所有的值。
- ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
- valueOf()方法返回指定字符串值的枚举常量。
enumColor { RED,GREEN,BLUE; } publicclassTest { publicstaticvoidmain(String[]args) { //调用values() Colorarr[]=Color.values(); //迭代枚举 for(Colorcol:arr) { //查看索引 System.out.println(col+"atindex"+col.ordinal()); } //使用valueOf()返回枚举常量,不存在的会报错IllegalArgumentException System.out.println(Color.valueOf("RED")); //System.out.println(Color.valueOf("WHITE")); } }
执行以上代码输出结果为:
REDatindex0
GREENatindex1
BLUEatindex2
RED
枚举类成员
枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用private访问修饰符,所以外部无法调用。
枚举既可以包含具体方法,也可以包含抽象方法。如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。
enumColor { RED,GREEN,BLUE; //构造函数 privateColor() { System.out.println("Constructorcalledfor:"+this.toString()); } publicvoidcolorInfo() { System.out.println("UniversalColor"); } } publicclassTest { //输出 publicstaticvoidmain(String[]args) { Colorc1=Color.RED; System.out.println(c1); c1.colorInfo(); } }
执行以上代码输出结果为:
Constructorcalledfor:RED
Constructorcalledfor:GREEN
Constructorcalledfor:BLUE
RED
UniversalColor
以上就是一文搞懂JAVA枚举(enum)的详细内容,更多关于JAVA枚举(enum)的资料请关注毛票票其它相关文章!