很少用到枚舉類型,今天看到別人用這個類型實現數據庫中無意義的標誌如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