枚举类(enum),与class和interface关键字地位相同。
枚举类是一个特殊的类,可以有自己的成员变量、方法、构造器,可以实现一个或多个接口。一个java源文件中只能有一个public的enum类。
枚举类终究不是普通类,它与普通类有什么区别呢?
enum默认继承的是java.lang.Enum类,而不是Object类。enum类不能显式继承其他父类。
使用enum定义、非抽象的枚举类默认会使用final修饰,因此enum类不能被继承(不能派生子类)。
枚举类的构造器只能使用private来修饰。
枚举类的所有实例只能在枚举类的第一行显式列出。系统会自动添加public static final 修饰,程序员无需显式添加。
枚举类提供了一个values()方法,可以很方便的遍历enum的值。
public enum SeasonEnum
{
//列出4个枚举实例
SRING,SUMMER,FALL,WINTER;
}
这个类等价于:
public static final int SEASON_SPRING=1;
public static final int SEASON_SUMMER=2;
public static final int SEASON_FALL=3;
public static final int SEASON_WINTER=4;
遍历SeasonEnum类的方法:
public class EnumTest
{
public void judge(SeasonEnum s)
{
switch(s)
{
case SRING:
syso(“春”);
break;
case SUMMER:
syso("夏");
break;
......
}
}
//main方法
main()
{
for(SeasonEnum s:SeasonEnum.values())
{
Syso(s);
}
new EnumTest().judge(SeasonEnum.SUMMER);//使用枚举类的类名SeasonEnum调用实例
}
}