黑马程序员技术交流社区
标题:
模拟交通灯系统中的枚举问题
[打印本页]
作者:
党巾水
时间:
2012-7-23 10:08
标题:
模拟交通灯系统中的枚举问题
本帖最后由 刘馨琪 于 2012-7-27 09:52 编辑
交通灯里的Lamp枚举,视频的程序有一段如下
public enum Lamp {
S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),//主操作线路
N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),//跟随线路
S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);//右转
private Lamp(String opposite,String next,boolean lighted){
this.opposite = opposite;
this.next = next;
this.lighted = lighted;
}
复制代码
这里只有一个构造方法,我自己又加了一个构造方法如下:
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
private Lamp(boolean lighted){
this.opposite = null;//控制这个灯的参数是传递进来很的,不是你构造的时候直接赋值的!
this.next = null;//外界需要给你个信号,你才能控制这个灯的改变。
this.lighted = lighted;
}
复制代码
意思达到了,但是含义却是完全不同了!!!视频中的代码内这个灯是由三个参数来控制的,虽然null是没有的意思,但是它也是控制这个灯的一个因素,而你这样做虽然达到和视频中代码同样的效果,但是代码看起来很山寨。
作者:
胡文凡
时间:
2012-7-26 22:13
简化了代码而已,实现的效果一样,但是这个时代的代码讲究的是规范性。越规范的东西也容易理解和维护。有些代码天马行空但是过了很久自己来看就看不懂了
作者:
党巾水
时间:
2012-7-27 09:52
谢谢大家,我明白了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2