枚举和枚举的使用(参考java core)
<1>枚举类型的定义
最常见的方式就是直接声明:
enum Size {LARGE, SMALL};
还可以定义一个泛型类,不需要使用";"来结尾:
enum Sex { MALE("man") , FEMALE("woman"); private String word; public Size(String word) { this.word=word; } public String getWord{ retrurn this.word; } }
可以看到类中定义了一个私有域、构造器和一个get方法。
注明:
- 枚举类型的值可以加上属性,形如MALE(“man”)。不过前提是类中定义了构造器和相应的私有域。
- 构造器只有在创建枚举类型时才会被调用
<2>枚举类的实质
- 任何定义的枚举类都是Enum<E>的子类,故而不可以再继承其他类
- 枚举类型的每一个值都将映射到
protected Enum(String name, int ordinal)
构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。
<3>枚举类的常见方法
int
compareTo(E other)
比较此枚举与指定对象的顺序。(枚举默认实现了java.lang.Comparable接口)
Class<E>
getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。
String
name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int
ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String
toString()
返回枚举常量的名称,它包含在声明中。
static
<T extends Enum<T>> T
valueOf(Class<T> enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。
事实上还有一个public static T[] values() 方法,会返回包含所有enum中声明的值的数组,这个方法并没有出现在javalang.Enum里面,而是由编译器自动加上去的。
参见http://stackoverflow.com/questions/13659217/where-is-the-documentation-for-the-values-method-of-enum