------- android培训、java培训、期待与您交流! ----------
需求:用普通类来实现枚举
public abstract class LampClass {
private LampClass(){};
private LampClass(int time){
this.time = time;
System.out.println(this.time);
}
public final static LampClass RED = new LampClass(5){
public LampClass nextLamp() {
return YELLOW;
}
};
public final static LampClass GREEN = new LampClass(){
public LampClass nextLamp() {
return RED;
}
};
public final static LampClass YELLOW = new LampClass(){
public LampClass nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
};
private int time;
public abstract LampClass nextLamp();
}
需求:定义枚举类:
//用enum定义一个枚举类
public enum LampEnum{
//指定构造参数调用相应的构造器,并实现其中的抽象方法,每个枚举值就是一个final static LampEnum 对象;
RED(30){
public LampEnum nextLamp(){
return YELLOW;
};
},GREEN(30){
public LampEnum nextLamp(){
return RED;
};
},YELLOW(5){
public LampEnum nextLamp(){
return GREEN;
};
};
//构造器定义必须放在枚举值的后面,并且构造器只能用private修饰
private LampEnum(){
System.out.println("the first constroctor");
};
private LampEnum(int time){
this.time = time;
}
private int time;
public abstract LampEnum nextLamp();
}
前言:视频目录
1.枚举的作用介绍
2.用普通类模拟枚举类的实现原理
3.Java5的枚举的基本应用
4.实现带有构造方法的枚举
5.实现带有抽象方法的枚举
一:概念
1.1枚举的作用介绍
枚举就是要让某个类型的变量取值只能为若干个固定值中的一个。否则,编译会报错。
1.2用普通类模拟枚举类的实现原理
首先,将构造函数私有化,让其他对象无法创建该类对象。
其次,每一个元素分别用一个公有静态成员变量表示。
最后,可以有多个公有方法或抽象方法。
1.3Java5枚举的基本应用
枚举是一个特殊的类,其中的每一个元素都是该类的一个实例对象。
1.4实现带有构造函数的枚举
构造函数必须私有化;如果有多个构造函数,则根据参数列表辨别调用哪个构造函数;枚举元素MON和MON()的效果一样,都是调用弄人的构造函数。
定义枚举注意:枚举元素必须位于枚举体中最开始的部分,枚举元素列表的后面要有分号与其他成员分隔。
枚举代码精华实现:
package com.test.exam;
public enum TrafficLamp {
Red(30){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return Yellow;
}},Green(45){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return Green;
}},Yellow(5){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return Red;
}};
//定义灯亮时间
private int time;
//带参数的构造函数
private TrafficLamp(int time){
this.time=time;
}
//抽象函数
public abstract TrafficLamp nextLamp();
}