前言背景
在开发应用程序过程中,经常会遇到有些数据的取值被限定在几个确定的值之间的情况,即这些值可以被一-列举出来。 例如,性别只有男和女、一周只有七天、一年只有四季等。对这种类型的数据,虽然可以通过在类或接口中定义常量来实现,但存在不安全因素,因此从Java5开始增加了对枚举类型的支持。对类似这种当一个变量有几种固定取值时,将其声明成枚举类型,则在应用上就更加方便与安全。
一、枚举的定义
1.语法格式
[修饰符] enum 枚举类型名 {
枚举成员
方法
}
修饰符可以是public或缺省
比如:
public enum A{
X , Y , Z;
}
枚举A的源代码为:
Compiled from "A.java"
public final class A extends java.lang. Enum<A> {
public static final A X = new A();
public static final A Y = new A();
public static final A Z = new A();
public static A[] values();
public static A valueOf(java.lang.String);
}
不难看出枚举成员默认使用 public static final 进行修饰
二、枚举的使用
1.访问枚举成员
可以用:枚举名.枚举成员
或使用Enum<E>类定义的valueOf()方法通过 枚举名.valueOf() 来访问
//访问成员X
A a1 = A.X;
A a2 = A.valueOf("X"):
所有枚举类型都包含values( )和valueOf()两个预定义方法。
public static enumtype[] values()
//返回枚举类型的数组,该数组包含枚举的所有枚举成员,并按它们的声明顺序存储
public static enumtype valueOf(String str)
//返回名称为str的枚举成员
2.注意事项
●枚举类的第一 行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象。枚举类的构造器都是私有的(写不写都只能是私有的) ,因此,枚举类对外不能创建对象。
●枚举都是最终类,不可以被继承。
●枚举类中, 从第二行开始,可以定义类的其他各种成员。
●编译器为枚举类新增了几个方法,并且枚举类都是继承: java.lang. Enum类的,从enum类也会继承到一些方法。
3.Enum<E>类的常用方法
public final String name( )//返回枚举常量的名称
public final int ordinal( )//返回枚举成员在枚举类中的序号(枚举成员的序号从0开始)
public final boolean equals( Object other)//比较两个枚举引用的对象是否相等
public String toString( )//返回枚举成员的名称
public static < T extends Enum< T >> T//从枚举类型的类对象enumType中返回名为name的枚举成员