您的位置:首页 > 编程语言 > Java开发

java枚举应用(一)

2016-05-04 14:26 357 查看
/**
* 简单枚举
* @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("昏天暗地,不知时日啊!");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: