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("昏天暗地,不知时日啊!"); } } } }