完整示例代码:
package com.yuankai; import java.util.EnumMap; import java.util.EnumSet; public class TestEnum { public static void main(String[] args) { // TODO Auto-generated method stub Color c1 = Color.Yellow; Color c2 = Color.Blue; Color c3 = Color.Red; System.out.println(c1); System.out.println(c2); System.out.println(c3); } public enum Color { //只是表示一个常量 Yellow, //有参数的构造方法 Blue(1), //有参构造方法,并且重新自己定义的方法 Red(2) { @Override public String description() { return "red color"; } }; //自定义方法,枚举常量可以调用这个方法 public int getCode() { return code; } public void setCode(int code) { this.code = code; }
//定义私有变量 private int code; Color() { } Color(int code) { this.code = code; } public String description() { return null; } //重新Enum类中的方法 @Override public String toString() { return "name:"+name()+" code:"+ getCode() +" desc:"+ description()+" ordinal:"+ordinal(); } //根据ordinal来获取枚举 public static Color ordinal(int ordinal) { for(Color c : Color.values()) { if(c.ordinal() == ordinal) { return c; } } return null; } public static Color findByCode(int code) { for(Color c : Color.values()) { if(c.getCode() == code) { return c; } } return null; } } private static void testEnumMap() { // 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是 key 的类的类型 EnumMap<Color, String> currEnumMap = new EnumMap<Color, String>( Color. class ); currEnumMap.put(Color.Blue, " 蓝色 " ); currEnumMap.put(Color.Yellow , " 黄色 " ); currEnumMap.put(Color.Red , " 红色 " ); // 2. 遍历对象 for (Color c : Color.values ()) { System. out .println( "[key=" + c.name() + ",value=" + currEnumMap.get(c) + "]" ); } } private static void testEnumSet() { EnumSet<Color> currEnumSet = EnumSet.allOf (Color. class ); for (Color c : currEnumSet) { System. out .println( " 当前 EnumSet 中数据为: " + c); } } }
1.第一个例子
package com.tothinkgames.t1.gm.member; public enum RoleType { Administrator { @Override public String getDescription() { return "管理员"; } }, CustomerService { @Override public String getDescription() { return "客服"; } }, Operation { @Override public String getDescription() { return "运营"; } }; public String getDescription() { return null; } public static RoleType ordinal(int ordinal) { for (RoleType t : values()) { if (t.ordinal() == ordinal) { return t; } } return null; } }
第二个例子:
public enum ActionErrorCodeConst { Not_Fount_Can_Compound_Star(2236){ @Override public String getDescription() { return "没有发现可以合成的将星"; } }; private final int errorCode; ActionErrorCodeConst(int errorCode) { this.errorCode = errorCode; } public int getErrorCode() { return errorCode; } public String getDescription() { return null; } public static ActionErrorCodeConst find(int errorCode){ for (ActionErrorCodeConst a : ActionErrorCodeConst.values()) { if(a.getErrorCode()==errorCode){ return a; } } return null; } }