JDK1.5中新增了枚举类型,可以使用该功能取代以往定义常量的方法,同时枚举类型还赋予程序在编译时进行检查的功能。
一、使用枚举类型设置常量
以为设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用,并且该常量不能被修改,因为在接口中定义常量时,该常量的修饰符为final与static。常规定义常量的示例如下:
public interface Constants{
public static final int Constants_A = 1;
public static final int Constants_B = 12;
}
使用枚举类型定义常量的语法如下:
public enum Constants{
Constants_A,
Constants_B,
Constants_C
}
在上述示例中,enum是定义枚举类型关键字,当需要在程序中使用该常量时,可以使用Constants.Constants_A来表示
二、深入了解枚举类型
1、操作枚举类型成员的方法
枚举类型较传统定义常量的方式,除了具有参数类型检测的优势之外,还具有了其它优势。
用户可以将一个枚举类型看作是一个类,它继承于java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作时枚举类型的一个实例,这些枚举类型成员都默认被final、public、static修饰,所有当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。
方法名称 | 具体含义 | 使用方法 | 举例 |
---|---|---|---|
values() | 该方法可以将枚举类型成员以数组的形式返回 | 枚举类型名称.values() | Constants2.values() |
valueOf() | 该方法可以实现将普通字符串转换为枚举实例 | 枚举类型名称.valueOf("abc") | Constants2.valueOf("abc") |
compareTo() | 该方法用于比较两个枚举对象在定义时的顺序 | 枚举对象.compareTo() | Constants_A.compareTo(Constants_B) |
ordinal() | 该方法用于得到枚举成员的位置索引 | 枚举对象.ordinal() | Constants_A.ordinal() |
对上述常用方法进行说明:
(1)values()
枚举类型实例包含一个values()方法,该方法将枚举类型的成员变量实例以数组的形式返回,也可以通过该方法获取枚举类型的成员
(2)valueOf()与compareTo()
枚举类型中静态方法valueOf()可以将普通字符串转换为枚举类型,而compareTo()方法用于比较两个枚举类型对象定义时的顺序。
(3)ordinal()
枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值
2、枚举类型中的构造方法
在枚举类型中,可以添加构造方法,但是规定这个构造方法必须为private修饰符修饰,无论是无参构造方法还说有参构造方法,修饰权限都为private。定义一个有参构造方法后,需要对枚举类型成员相应地使用该构造方法,如Constants_A("枚举成员A")和Constants_B(3)语句,分别使用了参数为String型和int型的构造方法。然后可以在枚举类型中定义两个成员变量,在构造方法中为这两个成员变量赋值,这样就可以在枚举类型中定义该成员变量的getXXX()方法了。
可以使用getDescription()方法获取枚举类型成员定义时的描述,也可以将这个getDescription()方法放置在接口中,时枚举类型实现该接口,然后使每个枚举类型实现接口中的方法。