作者QQ:1095737364 QQ群:123300273 歡迎加入!
enum很像特殊的class,實際上enum聲明定義的類型就是一個類。而這些類都是類庫中Enum類的子類(java.lang.Enum<E>)。它們繼承了這個Enum中的許多有用的方法。我們對代碼編譯之后發現,編譯器將enum類型單獨編譯成了一個字節碼文件:Color.class
下面是一個簡單的示例:
Color.java:自定義的枚舉及其使用方法,根據情況可以進行增刪!
public enum Color { RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4); // 成員變量:枚舉RED("紅色", 1)括號中的屬性來定義 private String name; private int index; // 構造方法:傳遞所有的屬性 private Color(String name, int index) { this.name = name; this.index = index; } // 1.通過編號得到名字 public static String getNameByIndex(int index) { for (Color c : Color.values()) { if (c.getIndex() == index) { return c.name; } } return null; } // 2.通過編號得到枚舉 public static Color getColorByIndex(int index) { for (Color c : Color.values()) { if (c.getIndex() == index) { return c; } } return null; } // 3.通過名字得到編號 public static int getIndexByName(String name) { for (Color c : Color.values()) { if (c.getName() == name) { return c.index; } } return -1; } // 通過名字得到枚舉 public static Color getColorByName(String name) { for (Color c : Color.values()) { if (c.getName() == name) { return c; } } return null; } //得到枚舉的名字 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; } // 覆蓋方法:設置自定義枚舉輸出(一般不用) // @Override // public String toString() { // return this.index + "_" + this.name; // } }
下面是一個測試用例:(自己import Java包)
EnumTest.java
public class EnumTest { public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE };//常量枚舉(簡單實用) public static void main(String[] args) { System.out.println(Size.SMALL); System.out.println(Color.BLANK); System.out.println(Color.getColorByIndex(1)); System.out.println(Color.getColorByName("白色")); System.out.println(Color.getIndexByName("白色")); System.out.println(Color.getNameByIndex(1)); // EnumSet的使用 EnumSet<Color> weekSet = EnumSet.allOf(Color.class); for (Color color : weekSet) { System.out.println(color); } // EnumMap的使用 EnumMap<Color, String> weekMap = new EnumMap(Color.class); weekMap.put(Color.GREEN, "綠"); weekMap.put(Color.BLANK, "白"); for (Iterator<Map.Entry<Color, String>> iter = weekMap.entrySet().iterator(); iter.hasNext();) { Map.Entry<Color, String> entry = iter.next(); System.out.println(entry.getKey().name() + ":" + entry.getValue()); } } }
謝謝打賞...