------- android培训、java培训、期待与您交流! ----------
枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。
下面来看下枚举类的原理,用普通类实现枚举。
class Demo1
{
public static void main(String[] args)
{
WeekDay day=WeekDay.MON;
System.out.println(day.toString());
day=day.nextDay();
System.out.println(day.toString());
}
}
abstract class WeekDay{
private WeekDay(){};
public static final WeekDay SUN=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public static final WeekDay MON=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return SUN;
}};
public abstract WeekDay nextDay();
public String toString(){
return this==MON?"MON":"SUN";
}
}
枚举类中的构造方法必须为私有。
name():获取枚举常量的名称。
ordinal():获取枚举类中的顺序编号。
toString():返回枚举常量的名称。
valueOf():静态方法。返回带指定名称的枚举常量。
values():静态方法。返回一个包含全部枚举值的数组。
import java.util.Arrays;
public class Demo1
{
public static void main(String[] args)
{
WeekDay day=WeekDay.SAT;
System.out.println(day);
System.out.println(day.name());
System.out.println(day.ordinal());
System.out.println(WeekDay.valueOf("FRI"));
System.out.println(Arrays.asList(WeekDay.values()));
}
public enum WeekDay{
//必须写在其他成员前面。
SUN(0),MON(),THE,WED,THI,FRI,SAT;
//构造方法必须为私有private
private WeekDay(){
System.out.println("first");
}
private WeekDay(int num){
System.out.println("second");
}
}
}
枚举类中实现抽象方法
public enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN;
}
},GREEN(30){
public TrafficLamp nextLamp(){
return YELLOW;
}
},YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time=time;
}
}