枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。
使用枚举类型可以使我们的代码可读性强。
创建一个枚举类
enumGrade{
A,B,C,D,E;//等同于A(),B(),C(),D(),E()
}
上面创建方法实质等同于下面的创建方法
classGrade{
privateGrade(){}
publicstaticfinalGrade A=newGrade();
publicstaticfinalGrade B=newGrade();
publicstaticfinalGrade C=newGrade();
publicstaticfinalGrade D=newGrade();
publicstaticfinalGrade E=newGrade();
}
在switch中使用枚举:
enumSignal {
GREEN, YELLOW, RED
}
publicclassTrafficLight{
Signal color = Signal.RED;
publicvoidchange(){
switch(color) {
caseRED:
color = Signal.GREEN;
break;
caseYELLOW:
color = Signal.RED;
break;
caseGREEN:
color = Signal.YELLOW;
break;
}
}
}
在枚举类中自定义一个方法:
enumGrade{// A 100-90 B 89-80 C 79-70 D 69-60 E 59-0
A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");//object
privateString value;//封装每个对象对应的分数
//枚举的构造方法为私有的
privateGrade(String value)//声明有参构造方法,枚举默认调用无参构造函数
{
this.value=value;
}
publicStringgetValue()
{
returnthis.value;
}
}
publicclassdemo{
publicstaticvoidmain(String[] args){
//打印出枚举值
System.out.println(Grade.A);
System.out.println(Grade.B);
System.out.println(Grade.C);
System.out.println(Grade.D);
System.out.println(Grade.E);
//打印出枚举中的自定义方法
System.out.println(Grade.A.getValue());
System.out.println(Grade.B.getValue());
System.out.println(Grade.C.getValue());
System.out.println(Grade.D.getValue());
System.out.println(Grade.E.getValue());
}
}
打印出的结果为:
100-90
89-80
79-70
69-60
59-0
创建带抽象方法的枚举类:
enumGrade{// A 100-90 优 B 89-80 良C 79-70 中 D 69-60 差 E 59-0不及格
A("100-90") {
publicStringlocaleValue(){
return"优";
}
},
B("89-80"){
publicStringlocaleValue(){
return"良";
}
},
C("79-70"){
publicStringlocaleValue(){
return"中";
}
},
D("69-60"){
publicStringlocaleValue(){
return"差";
}
},
E("59-0"){
publicStringlocaleValue(){
return"不及格";
}
};//object
privateStringvalue;//封装每个对象对应的分数
privateGrade(Stringvalue)//声明有参构造方法,枚举默认调用无参构造函数
{
this.value=value;
}
publicStringgetValue()
{
returnthis.value;
}
publicabstractStringlocaleValue();//抽象方法
}
//创建一个主函数,打印出枚举的localeValue()
publicclassdemo2{
publicstaticvoidmain(String[] args){
System.out.println(Grade.A.localeValue());
System.out.println(Grade.B.localeValue());
System.out.println(Grade.C.localeValue());
System.out.println(Grade.D.localeValue());
System.out.println(Grade.E.localeValue());
}
}
打印出的结果:
优
良
中
差
不及格
使用字符串获取枚举值
java.lang.Enum.valueOf() 方法返回指定名称enumtype的枚举常量。该名称必须用于声明在此类型的枚举常量的标识符完全匹配。
String str="B";
//Grade g=Grade.valueOf(Grade.class,str);Grade.class可以省略
//将字符串转换成相对应的枚举值,g为枚举常量B
Grade g=Grade.valueOf(str);
如果有想了解的知识,
领取专属 10元无门槛券
私享最新 技术干货