package enums; import java.util.EnumMap; import java.util.EnumSet; public enum ProductTypeEnum { //枚举,相当于ProductTypeEnum的实例,里面参数分别为产品类型代码和产品类型名称 OVERSEAPRODUCT(1 ,"海外产品" , "overseaProduct") { @Override public String speakProductType() { return "我是海外产品"; } }, COUNTRYPRODUCT(2 , "国内产品" , "countryProduct") { @Override public String speakProductType() { return "我是国内产品"; } }, HKPRODUCT(3 , "香港产品" , "hkProduct") { @Override public String speakProductType() { return "我是香港产品"; } }, MACAUPRODUCT(4 , "澳门产品" , "macauProduct") { @Override public String speakProductType() { return "我是澳门产品"; } }; private int code;//私有属性 private String name; private String englishName; ProductTypeEnum(int code , String name , String englishName){//构造方法,必须是protected或者private this.code = code; this.name = name; this.englishName = englishName; } //每一个枚举成员就有了自己的方法,可以定义多个方法,方法必须以抽象方法的形式作声明(例如 abstract String event();) //一个方法一旦定义了就必须在每一个枚举成员中得到实现。 public abstract String speakProductType(); public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getEnglishName() { return englishName; } public void setEnglishName(String englishName) { this.englishName = englishName; } //根据传入的值,遍历枚举类型(values()), public static ProductTypeEnum fromValue(String englishName){ for (ProductTypeEnum productTypeEnum : ProductTypeEnum.values()) { if (productTypeEnum.englishName.equals(englishName)) { return productTypeEnum; } } return null; } public static void main(String[] args) { //switch case 使用 ProductTypeEnum pEnum = fromValue("overseaProduct"); switch (pEnum) { case OVERSEAPRODUCT: System.out.println("这是一个海外产品!"); break; case COUNTRYPRODUCT: System.out.println("这是一个国内产品!"); break; case HKPRODUCT: System.out.println("这是一个香港产品!"); break; case MACAUPRODUCT: System.out.println("这是一个澳门产品!"); break; default: System.out.println("这不是一个正常产品!"); break; } //enum的遍历 System.out.println("-------------------------------------------"); for (ProductTypeEnum productTypeEnum : ProductTypeEnum.values()) { System.out.println(productTypeEnum.code + "----" + productTypeEnum.englishName + "----" + productTypeEnum.name); System.out.println("----" + productTypeEnum.speakProductType()); } //EnumSet System.out.println("--------------------------------------------"); EnumSet<ProductTypeEnum> productTypeEnumSet = EnumSet.allOf(ProductTypeEnum.class); for (ProductTypeEnum productTypeEnum : productTypeEnumSet) { System.out.println(productTypeEnum); } //EmunMap System.out.println("--------------------------------------------"); EnumMap<ProductTypeEnum,String> productTypeEnumMap = new EnumMap<ProductTypeEnum, String>(ProductTypeEnum.class); productTypeEnumMap.put(ProductTypeEnum.COUNTRYPRODUCT, "国内"); productTypeEnumMap.put(ProductTypeEnum.HKPRODUCT, "香港"); productTypeEnumMap.put(ProductTypeEnum.MACAUPRODUCT, "澳门"); productTypeEnumMap.put(ProductTypeEnum.OVERSEAPRODUCT, "海外"); for (ProductTypeEnum productTypeEnum : ProductTypeEnum.values()) { System.out.println(productTypeEnum.name() + "-----" + productTypeEnumMap.get(productTypeEnum)); } } }
输出 :
这是一个海外产品! ------------------------------------------- 1----overseaProduct----海外产品 ----我是海外产品 2----countryProduct----国内产品 ----我是国内产品 3----hkProduct----香港产品 ----我是香港产品 4----macauProduct----澳门产品 ----我是澳门产品 -------------------------------------------- OVERSEAPRODUCT COUNTRYPRODUCT HKPRODUCT MACAUPRODUCT -------------------------------------------- OVERSEAPRODUCT-----海外 COUNTRYPRODUCT-----国内 HKPRODUCT-----香港 MACAUPRODUCT-----澳门
参考链接:http://www.ibm.com/developerworks/cn/java/coretech/java-lang.html