黑马程序员技术交流社区

标题: 关于枚举提前使用未定义元素的疑问 [打印本页]

作者: 赖龙威    时间: 2013-10-17 21:59
标题: 关于枚举提前使用未定义元素的疑问
今天在看张老师的交通灯管理系统的时候,他设计Lamp这个枚举的时候,构造函数用的是String,老师说,这是为了避免使用为定义的变量。有没有其他方法?我记得学C++有这个功能
  1. package cn.itcast.traffic;
  2. public enum Lamp {
  3.         S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","N2S",false),E2S("W2N","S2N",false),
  4.         N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),
  5.         S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);
  6.         private String opposite;
  7.         private String next;
  8.         private boolean lighted;
  9.        
  10.         private Lamp(String opposite, String next, boolean lighted) {
  11.                 this.opposite = opposite;
  12.                 this.next = next;
  13.                 this.lighted = lighted;
  14.         }

  15.         public boolean isLighted() {
  16.                 return lighted;
  17.         }
  18.        
  19.         public void light() {
  20.                 lighted = true;
  21.                 if (opposite != null) {
  22.                         Lamp.valueOf(opposite).light();
  23.                 }
  24.         }
  25.        
  26.         public Lamp shutdown() {
  27.                 lighted = false;
  28.                 Lamp lamp = null;
  29.                 if (opposite != null)
  30.                         Lamp.valueOf(opposite).shutdown();
  31.                 if (next != null) {
  32.                         lamp = Lamp.valueOf(next);
  33.                         lamp.light();
  34.                 }
  35.                 return lamp;
  36.                
  37.         }
  38. }
复制代码

作者: 斗胆潇洒    时间: 2013-10-18 15:34
道友,
C++有吗?C++的枚举更简单,更固定。
没声明的东西,能先用?
反正我只记得的,用前先声明,
张老师这方法,已经够巧秒了
作者: To    时间: 2013-10-20 19:05
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2