枚举 详解-JAVA成长之路

用法一:常量

在JDK1.5之前,我们定义常量都是:public static fianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

Java代码

publicenumColor {

RED, GREEN, BLANK, YELLOW

}

用法二:switch

JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

Java代码

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;

}

}

}

用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且Java要求必须先定义enum实例。

Java代码

publicenumColor {

RED("红色",1), GREEN("绿色",2), BLANK("白色",3), YELLO("黄色",4);

// 成员变量

privateString name;

privateintindex;

// 构造方法

privateColor(String name,intindex) {

this.name = name;

this.index = index;

}

// 普通方法

publicstaticString getName(intindex) {

for(Color c : Color.values()) {

if(c.getIndex() == index) {

returnc.name;

}

}

returnnull;

}

// get set 方法

publicString getName() {

returnname;

}

publicvoidsetName(String name) {

this.name = name;

}

publicintgetIndex() {

returnindex;

}

publicvoidsetIndex(intindex) {

this.index = index;

}

}

用法四:覆盖枚举的方法

下面给出一个toString()方法覆盖的例子。

Java代码

publicenumColor {

RED("红色",1), GREEN("绿色",2), BLANK("白色",3), YELLO("黄色",4);

// 成员变量

privateString name;

privateintindex;

// 构造方法

privateColor(String name,intindex) {

this.name = name;

this.index = index;

}

//覆盖方法

@Override

publicString toString() {

returnthis.index+"_"+this.name;

}

}

用法五:实现接口

所有的枚举都继承自java.lang.Enum类。由于Java不支持多继承,所以枚举对象不能再继承其他类。

Java代码

publicinterfaceBehaviour {

voidprint();

String getInfo();

}

publicenumColorimplementsBehaviour{

RED("红色",1), GREEN("绿色",2), BLANK("白色",3), YELLO("黄色",4);

// 成员变量

privateString name;

privateintindex;

// 构造方法

privateColor(String name,intindex) {

this.name = name;

this.index = index;

}

//接口方法

@Override

publicString getInfo() {

returnthis.name;

}

//接口方法

@Override

publicvoidprint() {

System.out.println(this.index+":"+this.name);

}

}

用法六:使用接口组织枚举

Java代码

publicinterfaceFood {

enumCoffeeimplementsFood{

BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO

}

enumDessertimplementsFood{

FRUIT, CAKE, GELATO

}

}

用法七:关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

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

扫码关注云+社区

领取腾讯云代金券