public enum WeekDay {
SUN, MON, TUE, WED, THT, FRI, SAT;
public static void main(String[] args) {
WeekDay weekday = WeekDay.SUN;
System.out.println(weekday);
}
}
运行结果:
SUN
public enum Color {
RED("1", "红色"), YELLOW("2", "黄色");
// 成员变量
private String value;
private String desc;
// 构造方法
Color(String value, String desc) {
this.value = value;
this.desc = desc;
}
// get set 方法
public String getValue() {
return value;
}
public String getDesc() {
return desc;
}
// 普通方法
public static Color get(String type) {
for (Color color : values()) {
if (color.getValue().equalsIgnoreCase(type)) {
return color;
}
}
return null;
}
public static void main(String[] args) {
Color[] allLight = Color.values();
for (Color l : allLight) {
String value = l.getValue();
String desc = l.desc;
System.out.println(value + desc + get(value));
}
}
}
运行结果:
1红色RED
2黄色YELLOW
Color中添加方法
// 覆盖方法
@Override
public String toString() {
return this.value + "_" + this.desc;
}
public static void main(String[] args) {
Color[] allLight = Color.values();
for (Color l : allLight) {
String value = l.name();
String desc = l.desc;
System.out.println(value + desc+";" + l);
}
}
运行结果
RED红色;1_红色
YELLOW黄色;2_黄色
接口组织枚举
public interface Food {
enum Coffee implements Food {
BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO
}
enum Dessert implements Food {
FRUIT, CAKE, GELATO
}
}
EnumSet
EnumSet 是一个专为枚举设计的集合类,EnumSet中的所有元素都必须是指定枚举类型的枚举值
方法介绍:
EnumSet allOf(Class elementType): 创建一个包含指定枚举类里所有枚举值的EnumSet集合。
EnumSet complementOf(EnumSet e): 创建一个其元素类型与指定EnumSet里元素类型相同的EnumSet集合,新EnumSet集合包含原EnumSet集合所不包含的、此类枚举类剩下的枚举值(即新EnumSet集合和原EnumSet集合的集合元素加起来是该枚举类的所有枚举值)。
EnumSet copyOf(Collection c): 使用一个普通集合来创建EnumSet集合。
EnumSet copyOf(EnumSet e): 创建一个指定EnumSet具有相同元素类型、相同集合元素的EnumSet集合。
EnumSet noneOf(Class elementType): 创建一个元素类型为指定枚举类型的空EnumSet。
EnumSet of(E first,E…rest): 创建一个包含一个或多个枚举值的EnumSet集合,传入的多个枚举值必须属于同一个枚举类。
EnumSet range(E from,E to): 创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合。
示例代码:
public static void main(String[] args) {
EnumSet e = EnumSet.allOf(Color.class);
System.out.println(e);
}
输出结果
[RED, YELLOW]