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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 党巾水 中级黑马   /  2012-7-23 10:08  /  1589 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘馨琪 于 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种写法是一样的吗?谢谢!

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
党巾水 来自手机 中级黑马 2012-7-26 13:37:48
沙发
没有人解答乎?
来自:黑马程序员训练营论坛 Android客户端来自: Android客户端
回复 使用道具 举报
我觉得可以。就是多了一个构造方法而已。使用了不同的构造方法。
回复 使用道具 举报
没问题的,Ok,构造方法的重载,反正你里面都赋值为null了,实际传参也是null.
回复 使用道具 举报
  1. private Lamp(boolean lighted){
  2. this.opposite = null;//控制这个灯的参数是传递进来很的,不是你构造的时候直接赋值的!
  3. this.next = null;//外界需要给你个信号,你才能控制这个灯的改变。
  4. this.lighted = lighted;
  5. }
复制代码
意思达到了,但是含义却是完全不同了!!!视频中的代码内这个灯是由三个参数来控制的,虽然null是没有的意思,但是它也是控制这个灯的一个因素,而你这样做虽然达到和视频中代码同样的效果,但是代码看起来很山寨。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
简化了代码而已,实现的效果一样,但是这个时代的代码讲究的是规范性。越规范的东西也容易理解和维护。有些代码天马行空但是过了很久自己来看就看不懂了

评分

参与人数 1黑马币 +6 收起 理由
韦念欣 + 6 赞一个!

查看全部评分

回复 使用道具 举报
谢谢大家,我明白了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马