普通Java类实现枚举:
package com.test;
/**
* 使用Java普通类模拟枚举类
* @author Administrator
*
*/
public abstract class EnumTest {
//使用匿名内部类实现父类抽象方法
public static final EnumTest RED = new EnumTest(){
@Override
protected EnumTest nextLamp(int time) {
// TODO Auto-generated method stub
return GREEN;
}
};
public static final EnumTest GREEN = new EnumTest(){
@Override
protected EnumTest nextLamp(int time) {
// TODO Auto-generated method stub
return YELLOW;
}
};
public static final EnumTest YELLOW = new EnumTest(){
@Override
protected EnumTest nextLamp(int time) {
// TODO Auto-generated method stub
return RED;
}
};
//构造函数必须私有化
private EnumTest(){
}
public String toString(){
return this == RED ? "RED" : (this == GREEN ? "GREEN" : "YELLOW" );
}
//定义抽象方法
protected abstract EnumTest nextLamp(int time);
}
Java自带枚举类:
package com.test;
public class Test {
public static void main(String[] args) {
T lamp = T.RED;
System.out.println(lamp.nextLamp());
}
//定义枚举类
public enum T{
RED("红") {//返回的是子类(匿名内部类)的实例对象
@Override
public T nextLamp() {
return GREEN;
}
},GREEN("绿") {
@Override
public T nextLamp() {
return YELLOW;
}
},YELLOW("黄") {
@Override
public T nextLamp() {
return RED;
}
};
//定义对象别名
private String aliasName ;
//必须私有化构造函数
private T(){}
private T(String aliasName){
this.aliasName = aliasName;
}
public String toString(){
return aliasName;
}
public abstract T nextLamp();
}
}