嘿牛程序员__成都传智博客__枚举的一个带有case的普通实现——以星期的转换为例
2012-06-14 16:05
288 查看
---------------------- android培训、java培训、期待与您交流! ----------------------
枚举(二)
关于枚举的相关概念,我们上一篇已经讨论过。前面的而一个例子是通过抽象方法来实现的。我们都知道抽象方法只能定义,如果要实现只能被继承或被子类实现。前面的例子,我们是通过内部类来完成。下面我们借助一个例子,用一个普通方法来实现枚举之间值得转换。
例二:要求定义一个枚举类,实现星期的转化,并实现get 、set方法,用于设置转换时间
//实现如下:
package javaEnum;
/**
* 枚举 例二
* 本程序没有采用抽象方法,而是采用普通方法来实现的,实现的原理基本相似。用到CASE方法
*
* */
public enum Weekday2 {
SUN("星期日",3),MON("星期一",3),TUE("星期二",3),WED("星期三",3),THU("星期四",3),FRI("星期五",3),SAT("星期六",3);
private String name;
private long time;
private Weekday2(String name,long time){
this.name=name;
this.time=time;
}
public Weekday2 nextDay(){
switch(this){
case SUN:
System.out.println("周日转向周一,等待时间为"+getTime()+"秒");
getStop();
return MON;
case MON:
System.out.println("周一转向周二,等待时间为"+getTime()+"秒");
getStop();
return TUE;
case TUE:
System.out.println("周二转向周三,等待时间为"+getTime()+"秒");
getStop();
return WED;
case WED:
System.out.println("周三转向周四,等待时间为"+getTime()+"秒");
getStop();
return THU;
case THU:
System.out.println("周四转向周五,等待时间为"+getTime()+"秒");
getStop();
return FRI;
case FRI:
System.out.println("周五转向周六,等待时间为"+getTime()+"秒");
getStop();
return SAT;
case SAT:
System.out.println("周六转向周日,等待时间为"+getTime()+"秒");
getStop();
return SUN;
default:
return null;
}
}
public String getName() {
return name;
}
public void setTime(long time) {
this.time = time;
}
public long getTime() {
return time;
}
public void getStop() {
try{
Thread.sleep(1000*time);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
//测试类
package javaEnum;
public class TestWeekday2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//遍历weekday
for(Weekday2 w:Weekday2.values())
System.out.println("find value:"+ w);
//测试
Weekday2 we01=Weekday2.MON;
System.out.println(we01.nextDay());
System.out.println(we01.nextDay().getName());
Weekday2 we02=Weekday2.SUN;
System.out.println(we02.nextDay());
System.out.println(we02.getName());
//周期循环
Weekday2 w01=Weekday2.SUN;
Weekday2 w02=Weekday2.MON;
Weekday2 w03=Weekday2.TUE;
Weekday2 w04=Weekday2.WED;
Weekday2 w05=Weekday2.THU;
Weekday2 w06=Weekday2.FRI;
Weekday2 w07=Weekday2.SAT;
//设定时间
w01.setTime(3);
w02.setTime(1);
w03.setTime(3);
w04.setTime(1);
w05.setTime(3);
w06.setTime(1);
w07.setTime(3);
//实现两次循环
for(int i=0;i<2;i++)
{
w01.nextDay();
w02.nextDay();
w03.nextDay();
w04.nextDay();
w05.nextDay();
w06.nextDay();
w07.nextDay();
}
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
枚举(二)
关于枚举的相关概念,我们上一篇已经讨论过。前面的而一个例子是通过抽象方法来实现的。我们都知道抽象方法只能定义,如果要实现只能被继承或被子类实现。前面的例子,我们是通过内部类来完成。下面我们借助一个例子,用一个普通方法来实现枚举之间值得转换。
例二:要求定义一个枚举类,实现星期的转化,并实现get 、set方法,用于设置转换时间
//实现如下:
package javaEnum;
/**
* 枚举 例二
* 本程序没有采用抽象方法,而是采用普通方法来实现的,实现的原理基本相似。用到CASE方法
*
* */
public enum Weekday2 {
SUN("星期日",3),MON("星期一",3),TUE("星期二",3),WED("星期三",3),THU("星期四",3),FRI("星期五",3),SAT("星期六",3);
private String name;
private long time;
private Weekday2(String name,long time){
this.name=name;
this.time=time;
}
public Weekday2 nextDay(){
switch(this){
case SUN:
System.out.println("周日转向周一,等待时间为"+getTime()+"秒");
getStop();
return MON;
case MON:
System.out.println("周一转向周二,等待时间为"+getTime()+"秒");
getStop();
return TUE;
case TUE:
System.out.println("周二转向周三,等待时间为"+getTime()+"秒");
getStop();
return WED;
case WED:
System.out.println("周三转向周四,等待时间为"+getTime()+"秒");
getStop();
return THU;
case THU:
System.out.println("周四转向周五,等待时间为"+getTime()+"秒");
getStop();
return FRI;
case FRI:
System.out.println("周五转向周六,等待时间为"+getTime()+"秒");
getStop();
return SAT;
case SAT:
System.out.println("周六转向周日,等待时间为"+getTime()+"秒");
getStop();
return SUN;
default:
return null;
}
}
public String getName() {
return name;
}
public void setTime(long time) {
this.time = time;
}
public long getTime() {
return time;
}
public void getStop() {
try{
Thread.sleep(1000*time);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
//测试类
package javaEnum;
public class TestWeekday2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//遍历weekday
for(Weekday2 w:Weekday2.values())
System.out.println("find value:"+ w);
//测试
Weekday2 we01=Weekday2.MON;
System.out.println(we01.nextDay());
System.out.println(we01.nextDay().getName());
Weekday2 we02=Weekday2.SUN;
System.out.println(we02.nextDay());
System.out.println(we02.getName());
//周期循环
Weekday2 w01=Weekday2.SUN;
Weekday2 w02=Weekday2.MON;
Weekday2 w03=Weekday2.TUE;
Weekday2 w04=Weekday2.WED;
Weekday2 w05=Weekday2.THU;
Weekday2 w06=Weekday2.FRI;
Weekday2 w07=Weekday2.SAT;
//设定时间
w01.setTime(3);
w02.setTime(1);
w03.setTime(3);
w04.setTime(1);
w05.setTime(3);
w06.setTime(1);
w07.setTime(3);
//实现两次循环
for(int i=0;i<2;i++)
{
w01.nextDay();
w02.nextDay();
w03.nextDay();
w04.nextDay();
w05.nextDay();
w06.nextDay();
w07.nextDay();
}
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
相关文章推荐
- 嘿牛程序员__成都传智博客__枚举的一个带参构造函数的实现——以交通灯的转换为例
- 嘿牛程序员__成都传智博客__文件的拷贝:实现整个文件夹的拷贝
- 嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数(续一:通过数组实现按次序输出)
- 嘿牛程序员__成都传智博客__文件的拷贝:单个文件的拷贝(下)
- 嘿牛程序员__成都传智博客__javascript的注册表单验证、提交问题
- 嘿牛程序员__成都传智博客__文件的拷贝:单个文件的拷贝(上)
- 嘿牛程序员__成都传智博客__可变参数举例
- 嘿牛程序员__成都传智博客__JavaScript中的复选框的全选、反选问题
- 嘿牛程序员__成都传智博客__包装类(一)
- 嘿牛程序员__成都传智博客__包装类(二)
- 嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数(续一:通过数组实现按次序输出)
- 嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数
- 嘿牛程序员__成都传智博客__网络编程(下)
- CSDN博客:对于一个程序员,写程序就是实现功能,遇到具体问题,解决这个问题,并记录问题到CSDN上,从而有所提高和互相帮助。
- 写给想当程序员的朋友—一个还不太老的普通程序员的体会
- 实现一个可以发送表单内容转换成pdf并发送功能的android 程序
- ASP.NET : 一个网站繁体转换的简单实现
- c语言实现,将一个字符串转换为对应的整数
- android中switch中case通过枚举来实现
- 《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-理论)