微信扫一扫

028-83195727 , 15928970361
business@forhy.com

java枚举应用(一)

2016-05-27

/**
 * 简单枚举
 * @author littlehow
 *
 */
public enum Week {
	//周一到周日,不重写其toString的情况,默认为字面量
	Monday(1), Tuesday(2), Wednesday(3), Thursday(4), Friday(5), Saturday(6), Sunday(0);
	private int day;
	Week(int day) {
		this.day = day;
	}
	
	/**
	 * 根据数字天数返回对应枚举
	 * @param day  0-6之间的天数
	 * @return
	 */
	public static Week valueOf(int day) {
		if (day < 0 || day > 6 ) throw new IllegalArgumentException("no enum day is " + day);
		Week w = null;
		//数字都在可控范围,不需要default
		switch (day) {
		case 0 : 
			w = Sunday; break;
		case 1 : 
			w = Monday; break;
		case 2 : 
			w = Tuesday; break;
		case 3 : 
			w = Wednesday; break;
		case 4 : 
			w = Thursday; break;
		case 5 : 
			w = Friday; break;
		case 6 : 
			w = Saturday;
		}
		return w;
	}
	
	/**
	 * 获取对应的数值
	 * @return
	 */
	public int getDay() {
		return this.day;
	}
	
	/**
	 * 对枚举的一些基本操作
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(Monday);//输出Monday
		/** 根据字面量获取枚举实例 */
		Week w = Week.valueOf("Thursday");
		System.out.println(w.getDay());//4
		/** 根据数字天数获取 */
		w = Week.valueOf(2);
		System.out.println(w);//Tuesday
		try {
			/** 超出范围则抛出异常 */
			w = Week.valueOf(8);
		} catch (Exception e) {
			System.out.println(e.getMessage());//no enum day is 8
		}
		
		try {
			/** 设置一个没有字面量的枚举 */
			w = Week.valueOf("ME");
		} catch (Exception e) {
			System.out.println(e.getMessage());//No enum constant Week.ME
		}
		
		//枚举可作为switch控制语句
		java.util.Random r = new java.util.Random();
		for (int i = 0; i < 3; i ++) {
			w = Week.valueOf(r.nextInt(7));//随机三次0-6,看看不同的输出咯
			switch (w) {
			case Monday :
				System.out.println("今天是周一,又要开始上班了,呜呜..."); break;
			case Tuesday :
				System.out.println("今天是周二,昨天上班好累啊."); break;
			case Wednesday :
				System.out.println("一晃就周三啦,还有两天放假了,哈哈..."); break;
			case Thursday :
				System.out.println("周四了,今天都干了啥呢?"); break;
			case Friday :
				System.out.println("请大吼一句:老夫明天不上班!!"); break;
			case Saturday :
			case Sunday :
				System.out.println("好好放松啦,得之不易的周末哎!"); break;
			default :
				System.out.println("昏天暗地,不知时日啊!");
			}
		}
	}
}