Java5 中添加的新特性,方便我们处理枚举类型集。
枚举类型的使用
1.枚举类型的定义
public enum ColorEnum {
RED,
YELLOW,
GREEN,
;
private ColorEnum() {
}
}
重点说明:
- 使用 enum 关键字定义枚举类。
- java 要求必须先定义 enum 实例,如果在定义enum实例之前定义了任何方法或属性,那么在编译时就会得到错误信息。
- enum 实例之间用逗号隔开,如果打算定义自己的方法,必须在 enum 实例序列的最后添加一个分号。
- 枚举类型的实例是常量,因此按照命名惯例它们都用大写字母表示,如果在一个名字中有多个单词,用下划线将它们隔开。
- 构造函数强制是 private。
2.枚举类型的常见方法
public enum ColorEnum {
RED(),
YELLOW(,
GREEN(),
;
public static void main(String[] args) {
for (ColorEnum colorEnum : ColorEnum.values()) {
Integer ordinal = colorEnum.ordinal();
String name = colorEnum.name();
String nameStr = colorEnum.toString();
ColorEnum color = ColorEnum.valueOf(name);
System.out.println(colorEnum == color);
System.out.println(colorEnum.equals(color));
System.out.println(colorEnum.compareTo(color));
}
}
}
常见方法:
- values() : 返回按照声明时顺序的enum实例的数组。
- ordinal() : 返回一个int值,这是每个enum实例在声明时的次序,从 0 开始。
- name() : 返回 enum 实例声明时的名字。
- toString(): 同上,但可以支持重载。
- valueOf(String ): 根据给定的名字返回相应的 enum 实例。
- compareTo() : 返回两个枚举实例次序相减后的结果。
- equals() | == : 比较两个enum实例。
3.枚举类型的其他用法
主要有:
- switch 语句中的 enum
public void change(ColorEnum colorEnum) {
switch (colorEnum){
case RED:
System.out.println(RED.name());
break;
case YELLOW:
System.out.println(YELLOW.name());
break;
case GREEN:
System.out.println(GREEN.name());
break;
}
}
- 实现新接口
public interface IColorEnum {
public Integer getCode();
public String getInfo();
}
enum ColorEnum implements IColorEnum {
RED(1, "red"),
GREEN(2, "green"),;
ColorEnum(Integer code, String info) {
this.code = code;
this.info = info;
}
private Integer code;
private String info;
@Override
public Integer getCode() {
return code;
}
@Override
public String getInfo() {
return info;
}
- ......
参考文献:
Thinking in Java