枚举基本用法demo

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

你可能感兴趣的:(demo)