java1.5新特性枚举实现原理
程序员文章站
2024-03-17 18:23:16
...
package com.bp_soft.day01;
/**
* Java1.5中新特性枚举是如何实现的
* 下面我写一个普通类去模拟一下枚举的实现过程
* @author kevin
* 2010-3-8
*/
public abstract class TrafficLight {
//在使用枚举时,定义常量实际上是当前类静态常量对象
//(1)用普通类模拟枚举,首先该类的构造方法应该是私有的
private int time;
private TrafficLight(){};
private TrafficLight(int time){
this.time=time;
}
//定义RED,GREEN,YELLOW当前类的静态常量对象
public final static TrafficLight RED=new TrafficLight(30){
@Override
public TrafficLight nextLight() {
return GREEN;
}
@Override
public String toString() {
return "RED";
}
};
public final static TrafficLight GREEN=new TrafficLight(45){
@Override
public TrafficLight nextLight() {
return YELLOW;
}
@Override
public String toString() {
return "YELLOW";
}
};
//这是通过匿名内部内来实现的
public final static TrafficLight YELLOW=new TrafficLight(){
@Override
public TrafficLight nextLight() {
return RED;
}
@Override
public String toString() {
return "RED";
}
};
//当我们在使用这个类时, 不可能再随随便便来创建其他对象,(我们只能选择上面三个对象的其中之一),这就是枚举实现思想
public abstract String toString();
//父类的抽象方法有子类来实现
public abstract TrafficLight nextLight();
public static void main(String args[]){
System.out.println(RED.nextLight());
}
}
package com.bp_soft.day01;
/**
* 下面我写的一个枚举,比较一下就会知道枚举实现原理了吧
* @author kevin
* 2010-3-8
*/
public enum TrafficLightEnum {
RED(30){
public TrafficLightEnum nextLight(){
return GREEN;
}
public String toString(){
return "RED";
}
},GREEN(45){
public TrafficLightEnum nextLight(){
return YELLOW;
}
public String toString(){
return "GREEN";
}
},YELLOW(5){
public TrafficLightEnum nextLight(){
return YELLOW;
}
public String toString(){
return "YELLOW";
}
};
private int time;
private TrafficLightEnum(){}//在枚举中可以定义私有的构造方法
private TrafficLightEnum(int time){this.time=time;}//在枚举中可以定义多个私有构造函数
public abstract TrafficLightEnum nextLight();
public abstract String toString();
}
上一篇: 一些基础易忘记的重要内容