黑马程序员----交通灯系统注意点归纳

---------------------- android培训java培训、期待与您交流! ----------------------
以下为Lamp类代码:

package com.itcast.interview.traffic;


						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 boolean lighted;
							private Lamp oppositeLamp;
							private Lamp nextLamp;

							private Lamp(String oppositeLamp , String nextLamp, boolean lighted) {//没有直接传入Lamp类型而是改用String是因为在enum中不能使用未定义的枚举
								this.oppositeLamp = Lamp.valueOf(oppositeLamp);//用枚举的valueof方法将String转换为enum类型
								this.nextLamp = Lamp.valueOf(nextLamp);
								this.lighted = lighted;
							}
							
							public boolean isLighted(){
								return this.lighted;
							}
							
							public void light(){
								this.lighted = true;
								if(oppositeLamp != null){
									oppositeLamp.light();
								}
							}
							
							public Lamp black(){
								this.lighted = false;
								if(this.oppositeLamp != null){
									oppositeLamp.lighted = false;
								}
								if(this.nextLamp != null){
									  this.nextLamp.light();
								}
								return nextLamp;
							}
    
						}

 枚举注意点:
        1:所有成员属性必须设置为私有
        2:在定义枚举时,枚举后面的形参没有使用枚举类型而改用相应的String类型进行转换!!!这是因为在加载这个枚举类时加载第一个枚举类型S2N,而它使用到了将要被加载的S2W,这时
          jvm不能识别S2W(因为暂时枚举中不存在S2W)将会报错!
        3:枚举可以有无参构造和有参构造,并可以根据需要添加方法,十分方便。
        4:枚举中只放一个type可作为单列模式运用。

---------------------- android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

 

你可能感兴趣的:(程序员)