很少用到枚举类型,今天看到别人用这个类型实现数据库中无意义的标志如1,2,3和特定意义的业务状态绑定,觉得这样用很好很合适。故研究了一下枚举的使用,做个记录。
1、枚举最简单的使用:
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
2、在枚举类型中添加复杂的实例序列和方法:
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
3、枚举类enum的values()方法:
在上例中可以猜测到,Color.values()得到的数一个数组,为更简明的阐述该方法的返回结果,参照如下代码:
public enum EnumDemoFirst {
RED(1,"hongse"),GREEN(2,"lvse"),YELLOW(3,"huangse");
private int code;
private String msg;
private EnumDemoFirst(int ordinal, String name) {
this.code = ordinal;
this.msg = name;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
测试方法如下:
public class EnumTest {
public static void main(String[] args) {
EnumDemoFirst[] values = EnumDemoFirst.values();
for (EnumDemoFirst enumDemoFirst : values) {
System.out.println(enumDemoFirst + "--" + enumDemoFirst.getCode() + "--" + enumDemoFirst.getMsg());
System.out.println("=============");
}
}
}
用法尚未总结全,待补充
参考:https://blog.csdn.net/kdc18333608478/article/details/72845587