规范
用法一:常量
在JDK1.5 之前,我们定义常量都是: public static final.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
定义枚举类
public enum ColorEnum {
RED, GREEN, BLANK, YELLOW
}
使用时
ColorEnum color = ColorEnum.RED;
用法二:switch
switch 里使用枚举,可以限定出现的可能,把范围牢牢锁死,使用int,可能会出现其他的值,意思也不够明确
enum SignalEnum {
GREEN, YELLOW, RED
}
public class TrafficLight {
SignalEnum color = SignalEnum.RED;
public void change() {
switch (color) {
case RED:
color = SignalEnum.GREEN;
break;
case YELLOW:
color = SignalEnum.RED;
break;
case GREEN:
color = SignalEnum.YELLOW;
break;
}
}
}
用法三:向枚举中添加新方法
如果打算自定义自己的方法,必须先定义 enum 实例,而且必须在enum实例序列的最后添加一个分号
用增强型for循环,结合.values属性,方便的遍历枚举类有哪些常亮
package com.cxy.pojo;
public enum UserStateEnum {
NORMAL("正常",0),LOCKED("封禁",1);
//成员变量
private final String desc;//用户状态描述
private final int value;//用户状态值
//构造方法
private UserStateEnum(String desc, int value) {
this.desc = desc;
this.value = value;
}
//根据状态值获得状态描述
//用增强型for循环,结合.values属性,方便的遍历枚举类有哪些常亮
public static String getState(int value) {
for(UserStateEnum us:UserStateEnum.values()) {
if(us.getValue()==value) {
return us.desc;
}
}
return null;
}
//getter&setter
public String getDesc() {
return desc;
}
public int getValue() {
return value;
}
public void setDesc(String desc) {
this.desc = desc;
}
public void setValue(int value) {
this.value = value;
}
}
用法四:覆盖枚举的方法
@Override
public String toString() {
return this.value+"_"+this.desc;
}
用法五:实现接口
public interface Behaviour {
void print();
String getInfo();
}
package com.cxy.pojo;
public enum UserStateEnum implements Behavior{
NORMAL("正常",0),LOCKED("封禁",1);
//成员变量
private String desc;//用户状态描述
private int value;//用户状态值
//构造方法
private UserStateEnum(String desc, int value) {
this.desc = desc;
this.value = value;
}
//根据状态值获得状态描述
private static String getState(int value) {
for(UserStateEnum us:UserStateEnum.values()) {
if(us.getValue()==value) {
return us.desc;
}
}
return null;
}
//getter&setter
public String getDesc() {
return desc;
}
public int getValue() {
return value;
}
public void setDesc(String desc) {
this.desc = desc;
}
public void setValue(int value) {
this.value = value;
}
@Override
public String toString() {
return this.value+"_"+this.desc;
}
@Override
public void print() {
// TODO Auto-generated method stub
}
@Override
public String getInfo() {
// TODO Auto-generated method stub
return null;
}
}
枚举值比较
枚举类型对象之间的值比较,是可以使用==,直接来比较值,是否相等的,不是必须使用equals方法的哟。