1.使用EnumSet替代标志:Set是一种集合,只能向其中添加不重复的对象。由于不能从enum中删除或添加元素,java SE5引入EnumSet,EnumSet中的元素必须来自一个enum,具有高品质、类型安全的优势。
enum Season {
SPRING, SUMMER, AUTUMN, WINTER;
}
public class Test16 {
public static void main(String[] args) {
EnumSet<Season> seasons = EnumSet.noneOf(Season.class);
seasons.add(Season.AUTUMN);
System.out.println(seasons);
seasons = EnumSet.allOf(Season.class);
System.out.println(seasons);
}
}
2.使用EnumMap:EnumMap要求其中的键(key)必须来自一个enum,它在内部以一个数组存储value,根据enum类型的key直接定位到内部数组的索引。enum的每个实例作为一个键,总是存在的。没有为这个键调用put()方法来存入相应的值的话,其对应的值就是null。
enum Season {
SPRING, SUMMER, AUTUMN, WINTER;
}
public class Test17 {
public static void main(String[] args) {
EnumMap<Season, String> map = new EnumMap<Season, String>(Season.class);
map.put(Season.SPRING, "春天");
map.put(Season.SUMMER, "夏天");
map.put(Season.AUTUMN, "秋天");
map.put(Season.WINTER, "冬天");
System.out.println(map);
System.out.println(map.get(Season.AUTUMN));
}
}
3.常量相关的方法:可以为enum实例编写方法,为每个实例给出不同的行为。实现常量的相关方法需要为enum定义一个或多个abstract方法,然后在为每个enum实例实现该抽象方法。
public enum Season3 {
SPRING, SUMMER, AUTUMN, WINTER {
void a() {
System.out.println("a()");
}
};
void a() {
System.out.println("a1()");
}
public static void main(String[] args) {
for (Season3 season : values()) {
System.out.print(season + ":");
season.a();
}
}
}
Java枚举(Enum)高效使用技巧
本文介绍了Java中EnumSet和EnumMap的使用,EnumSet作为安全且高效的集合,适用于不可变的枚举元素集合操作;EnumMap则提供了一种根据枚举键存储和获取值的快速方式。此外,还展示了如何为枚举常量定义特定行为的方法。
3473

被折叠的 条评论
为什么被折叠?



