---------------------- 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