---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
一、定义
一个类的对象是可一一列举出来的,这个类可以定义为枚举类。
二、特征
1.每一个枚举值都是一个对象,即枚举类型的实例是常量。
2.Java要求必须先定义enum实例,否则编译器会报错。其他定义的成员必须放到枚举变量列表后。3.一旦enum类的定义结束,编译器就不允许我们再使用其构造器来创建任何实例了,所以一般情况下枚举类中的构造器的限定修饰符为private。
4.所有的enum类都继承自java.lang.Enum类,所以enum类不能继承及其他的类,因为Java不能实现多重继承。
三、常用API
ordinal(),用来表示某个特定enum常量的声明顺序。
values(),用来按照enum常量的声明顺序,产生由这些常量值构成的数组。
四、实例
1.带构造方法的枚举类举例
/**
*
* 带构造方法枚举类
* 类定义说明:一个星期有7天,所以有7个值,
*/
public enum WeekDay{
SUN(0),MON,TUE,WED,THI,FRI,SAT;//枚举类型实例
/*
* 一旦enum类的定义结束,编译器就不允许我们再使用其构造器来创建任何实
* 例了,所以一般情况下枚举类中的构造器的限定修饰符为private。
*/
private WeekDay(){
System.out.println("first");
}
private WeekDay(int day){
System.out.println("second");
}
}
2.带抽象方法和匿名内部类的枚举类举例
/**
* 带抽象方法和匿名内部类的枚举类举例
* 交通灯例子,有3个实例,红、黄、绿
*/
public enum TrafficLamp{
RED(30){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},
GREEN(45){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},
YELLOW(5){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public abstract TrafficLamp nextLamp();//抽象方法
private int time;//交通灯亮的时长。
private TrafficLamp(int time){
this.time=time;
}
public int getTime(){
return time;
}
}
实例运行:
/**
* 实例测试类
*/
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay weekDay =WeekDay.SUN;
System.out.println(weekDay);
System.out.println(weekDay.name());
System.out.println(weekDay.ordinal());
System.out.println(weekDay.valueOf("SUN"));//
System.out.println(WeekDay.values().length);//按照定义顺序组装成数组。
System.out.println("-----------------------------");
TrafficLamp lamp=TrafficLamp.RED;
System.out.println(lamp);
System.out.println(lamp.name());
System.out.println(lamp.ordinal());
System.out.println(lamp.valueOf("RED"));//
System.out.println(lamp.values().length);//按照定义顺序组装成数组。
System.out.println(lamp.getTime());
}
}
详细请查看:<a href="http://www.itheima.com" target="blank">www.itheima.com</a>