首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈Java枚举类型

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

如果有想了解的知识,

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227G0614Y00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券