某些情况下一个类的对象是有限而且固定的,例如性别就只有两个类(考虑大众情况)。因此这种实例有限而且固定的类,java里面叫枚举类。枚举类的关键字是enum,一些基本的命名规则和文件命名等细节和一般的类一样。但是具体还是有一些区别的:
1.枚举类不能显式继承其他父类
2.非抽象枚举类不能派生子类
3.枚举类的构造器只能使用private访问控制符
4.枚举类的所有实例必须在枚举类的第一行显式列出,系统会自动为这些实例添加public static final 修饰符
5.枚举类通常是不可变类,因此成员变量最好都设置成private final 修饰
下面看具体的例子:
package season; public enum SeasonEnum { SPRING("warm"),SUMMER("hot"),Fail("relax"),WINTER("cold"); private final String description; private SeasonEnum(String description) { this.description = description; } public String season_description() { return this.description; } } package season; public class Test { public static void main(String[] args) { SeasonEnum season1 = Enum.valueOf(SeasonEnum.class,"SPRING"); System.out.println(season1 + " present " + season1.season_description()); for(SeasonEnum season2 : SeasonEnum.values()) { System.out.println(season2); } } }
程序运行结果如下:
SPRING present warm SPRING SUMMER Fail WINTER
在上面的程序中我们定义了一个枚举类SeasonEnum, 并通过Test类实现。其中有几个需要注意的地方:
1.枚举类的构造器是private访问权限,因此在枚举类的第一行列出枚举类是要传入相应的参数;
2.所有的枚举类都可以直接使用java.lang.Enum类中的方法。这里我们使用了valueOf(),注意第一个参数SeasonEnum.class;
3.当用System.out.println() 输出枚举类的实例时,实际上添加了toString()方法,因此输出该枚举值的名字。