黑马程序员技术交流社区

标题: 模拟交通灯系统中的枚举问题 [打印本页]

作者: 党巾水    时间: 2012-7-23 10:08
标题: 模拟交通灯系统中的枚举问题
本帖最后由 刘馨琪 于 2012-7-27 09:52 编辑

交通灯里的Lamp枚举,视频的程序有一段如下
  1. public enum Lamp {        
  2.         S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),//主操作线路
  3.         N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),//跟随线路
  4.         S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);//右转
  5.         
  6.         private Lamp(String opposite,String next,boolean lighted){
  7.                 this.opposite = opposite;
  8.                 this.next = next;
  9.                 this.lighted = lighted;
  10.         }
复制代码
这里只有一个构造方法,我自己又加了一个构造方法如下:
private Lamp(boolean lighted){
this.opposite = null;
this.next = null;
this.lighted = lighted;
}

相应的枚举改写成了 :
S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),//主操作线路
        N2S(false),N2E(false),W2E(false),W2N(false),//跟随线路
        S2E(true),E2N(true),N2W(true),W2S(true);//右转

自己测试感觉没什么区别,但是不能确定这样是不是有问题,请问这2种写法是一样的吗?谢谢!

作者: 党巾水    时间: 2012-7-26 13:37
没有人解答乎?
来自:黑马程序员训练营论坛 Android客户端
作者: 肖琦    时间: 2012-7-26 14:07
没问题的,Ok,构造方法的重载,反正你里面都赋值为null了,实际传参也是null.
作者: 吴立杰    时间: 2012-7-26 14:33
  1. private Lamp(boolean lighted){
  2. this.opposite = null;//控制这个灯的参数是传递进来很的,不是你构造的时候直接赋值的!
  3. this.next = null;//外界需要给你个信号,你才能控制这个灯的改变。
  4. this.lighted = lighted;
  5. }
复制代码
意思达到了,但是含义却是完全不同了!!!视频中的代码内这个灯是由三个参数来控制的,虽然null是没有的意思,但是它也是控制这个灯的一个因素,而你这样做虽然达到和视频中代码同样的效果,但是代码看起来很山寨。
作者: 胡文凡    时间: 2012-7-26 22:13
简化了代码而已,实现的效果一样,但是这个时代的代码讲究的是规范性。越规范的东西也容易理解和维护。有些代码天马行空但是过了很久自己来看就看不懂了
作者: 党巾水    时间: 2012-7-27 09:52
谢谢大家,我明白了!




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