作者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()); } } }
谢谢打赏...