使用普通类黄实现绿红3个颜色的枚举
class ColarEnum {
//私有化防止外部实例化此类
private ColarEnum(){}
//转化为字符串以便输出
public String toString(){
if(this == GREEN)
return "GREEN";
elseif(this == YELLOW)
return "YELLOW";
else
return "RED";
}
//构造函数私有化后,只能在内部设定枚举值,此处为GREEN,YELLOW,RED
public static final ColarEnum GREEN = new ColarEnum();
//static,final顺序无关紧要
public final static ColarEnum YELLOW = new ColarEnum();
public final static ColarEnum RED = new ColarEnum();
}
public class EnumTest {
public static void main(String[] args) {
ColarEnum A = ColarEnum.GREEN;
ColarEnum B = ColarEnum.YELLOW;
ColarEnum C = ColarEnum.RED;
System.out.println(A.toString());
System.out.println(B.toString());
System.out.println(C.toString());
}
}
关联3个颜色,GREEN→YELLOW→RED→GREEN..
//使用抽象方法,类也变为抽象
abstract class ColarEnum {
private ColarEnum(){}
//抽象方法
public abstract ColarEnum next();
public String toString(){
if(this == GREEN)
return "GREEN";
if(this == YELLOW)
return "YELLOW";
else
return "RED";
}
//每个元素来实现自己的next方法
public static final ColarEnum GREEN = new ColarEnum(){
public ColarEnum next(){
return YELLOW;
}
};
public final static ColarEnum YELLOW = new ColarEnum(){
public ColarEnum next(){
return RED;
}
};
public final static ColarEnum RED = new ColarEnum(){
public ColarEnum next(){
return GREEN;
}
};
}
public class EnumTestCP {
public static void main(String[] args) {
ColarEnum A = ColarEnum.GREEN;
System.out.println(A.toString());
System.out.println(A.next().toString());
System.out.println(A.next().next().toString());
}
}