一文搞懂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)的资料请关注毛票票其它相关文章!