enum枚举
枚举也可以叫枚举类,而枚举类其实就是多例是有限个数的,一个类有多个实例,但实例的个数不是无穷的。
首先枚举是一个特殊的class,这个class相当于final static修饰,不能被继承,它的构造方法强制被私有化,所有的枚举类都继承自Java.lang.Enum类。由于java不支持多继承,所以枚举类对象不能再继承其它类
public enum ColorEnum { //每个枚举变量都是枚举类ColorEnum的实例,相当于RED=new ColorEnum(1),按序号来。 //每个成员变量都是final static修饰 RED, GREEN, BLANK, YELLOW; } public void ColorTest() { //ordinal返回枚举变量的序号 for(ColorEnum color:ColorEnum.values()) { System.out.println(color+",ordinal:"+color.ordinal()+",name:"+color.name()) ; }
定义枚举类
注意, 定义枚举类的关键字是enum,而不是Enum,所有关键字都是小写的!,枚举类继承了 java.lang.Enum类
其中FRONT、BEHIND、LEFT、RIGHT都是枚举项,它们都是本类的实例,本类一共就只有四个实例对 象。
在定义枚举项时,多个枚举项之间使用逗号分隔,最后一个枚举项后需要给出分号!但如果枚举类中只 有枚举项(没有构造器、方法、实例变量),那么可以省略分号!建议不要省略分号!
枚举类都是Enum的子类
所有枚举类都是 java.lang.Enum 的子类,无需使用extends来继承,如下是枚举类拥有的常用方 法
方法名称 | 说明 |
---|---|
int compareTo(E e) | 比较两枚举量大小,其实声明顺序的下标索引 |
boolean equals(Object o) | 比较两个枚举常量是否相等 |
int hashCode() | 返回枚举常量的hashCode |
String name() | 返回枚举常量的名字 |
int ordinal() | 返回枚举常量在枚举类声明的序号,第一个枚举常量 序号为0 |
String toString() | 枚举常量转换字符串 |
static T valueOf(Class enumType,String name) | 把字符串转换成枚举常量 |
static T[] values() | 返回本类所有枚举常量数组 |
static T valueOf(String name) | 通过枚举常量的名称字符串返回T枚举常量 |