Java SE学习之枚举总结(二)

2014-11-23 19:00:34 · 作者: · 浏览: 35
d stub ColorInterface.RED.print(); } }
用法六:枚举集合的使用

package meiju;

import java.util.EnumMap;
import java.util.EnumSet;
/**
 * 
* @ClassName: EnumLIghtTest 
* @Description: 枚举的遍历
* @author zhangjunshuai junshuaizhang@163.com 
* @date 2014-11-16 下午07:41:13 
*
 */
public class EnumLIghtTest {

	//1.定义枚举类型
	public enum Light{
		//2.利用构造参数传参
		RED(1),GREEN(3),YELLOW(2);
		//定义私有变量
		private int nCode;
		// 构造函数,枚举类型只能为私用
		private Light(int _nCode){
			this.nCode = _nCode;
		}
		
		public String toString(){
			return String.valueOf(this.nCode);
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//1.遍历枚举类型
		System.out.println("演示枚举类型的遍历……");
		testTranversalEnum();
		
		//2.EnumMap对象的使用
		System.out.println("演示EnumMap对象的使用和遍历……");
		testEnumMap();
		
		//3.演示EnumSet的使用
		System.out.println("演示EnumSet对象的使用和遍历……");
		testEnumSet();

	}

	/**
	 * 演示枚举类型的遍历
	 */
	private static void testTranversalEnum(){
		Light[] allLight = Light.values();
		for(Light aLight : allLight){
			System.out.println("当前灯name:"+aLight.name());
			System.out.println("当前灯ordinal:"+aLight.ordinal());
			System.out.println("当前灯:"+aLight);
			
		}
	}
	/**
	 * 演示EnumMap的使用,EnumMao跟HashMap的使用差不多,只是key值是枚举类型
	 */
	private static void testEnumMap(){
		//1.演示定义EnumMap对象,EnumMap对象的构造函数需要参数传入,默认是key的类的类型
		EnumMap
  
    currEnumMap = new EnumMap
   
    (Light.class); currEnumMap.put(Light.RED, "红灯"); currEnumMap.put(Light.GREEN, "绿灯"); currEnumMap.put(Light.YELLOW, "黄灯"); for(Light aLight :Light.values()){ System.out.println("[key="+aLight.name()+",value=" +currEnumMap.get(aLight)+"]"); } } /** * 演示EnumSet如何使用,EnumSet是一个抽象类,获取一个类型的枚举类型内容 * * 可以使用allOf方法 */ private static void testEnumSet(){ EnumSet
    
      currEnumSet = EnumSet.allOf(Light.class); for(Light aLightSetElement :currEnumSet){ System.out.println("当前EnumSet中数据为:"+aLightSetElement); } } } 
    
   
  

用法七:用接口组织枚举

public interface Food {
	enum Coffee implements Food{
		BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
	}
	enum Dessert implements Food{
		FRUIT, CAKE, GELATO
	}
}

枚举相对于final static来说,枚举可以减少变量的定义,在switch中的使用有利于代码的执行效率,同时枚举可以自定义内置方法,还有就是枚举可以使用遍历方法。虽然枚举有一些优势但是枚举不是继承。

参考:

http://www.iteye.com/topic/1116193

http://blog.csdn.net/p106786860/article/details/11516269