A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁胜海 中级黑马   /  2012-12-10 22:48  /  1356 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一种:传统的方法
public abstract class TrfficLight {
private int time;
public final static TrfficLight RED = new TrfficLight(30) {
  @Override
  public TrfficLight nextLight() {
   return GREEN;
  }
};
public final static TrfficLight YELLOW = new TrfficLight(5) {
  @Override
  public TrfficLight nextLight() {
   return RED;
  }
};
public final static TrfficLight GREEN = new TrfficLight(45) {
  @Override
  public TrfficLight nextLight() {
   return YELLOW;
  }
};
public abstract TrfficLight nextLight();
public TrfficLight(int time) {
  this.time = time;
}
public int getTime() {
  return time;
}

@Override
public String toString() {
  if (this==RED){
   return "GREEN";
  }else if(this==YELLOW){
   return "RED";
  }else{
   return "YELLOW";
  }
}
}
第二种:枚举的方法
public enum TrifficLinghtEnum {
RED(30){
  @Override
  public String nextLight() {
   return "GREEN";
  }
},
YELLOW(5){
  @Override
  public String nextLight() {
   return "RED";
  }
},
GREEM(45){
  @Override
  public String nextLight() {
   return "YELLOW";
  }
};
public abstract String nextLight();
private int time;
private TrifficLinghtEnum(int time) {
  this.time=time;
}
public int getTime() {
  return time;
}
}
现在我们定义一个类来测试以下,结果是不是一样的呢?
public class TrfficTest {
public static void main(String[] args) {
  /*
   * 传统的方法
   */
  TrfficLight t1=TrfficLight.GREEN;
  System.out.println(t1.nextLight()+"->wait:"+t1.getTime());
  TrfficLight t2=TrfficLight.RED;
  System.out.println(t2.nextLight()+"->wait:"+t2.getTime());
  TrfficLight t3=TrfficLight.YELLOW;
  System.out.println(t3.nextLight()+"->wait:"+t3.getTime());
  
  System.out.println("----------华丽的分割线-------------");
  /*
   * ,枚举的方法
   */
  TrifficLinghtEnum tle1=TrifficLinghtEnum.GREEM;
  System.out.println(tle1.nextLight()+"->wait:"+tle1.getTime());
  TrifficLinghtEnum tle2=TrifficLinghtEnum.RED;
  System.out.println(tle2.nextLight()+"->wait:"+tle2.getTime());
  TrifficLinghtEnum tle3=TrifficLinghtEnum.YELLOW;
  System.out.println(tle3.nextLight()+"->wait"+tle3.getTime());
}
}
打印结果为:

未命名.jpg (14.07 KB, 下载次数: 1)

未命名.jpg

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
这么牛逼的贴没人坐板凳。
回复 使用道具 举报
我来顶一下……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马