EnumSet
枚举单参数能参与switch case值判断:
public enum Color {
YELLOW,
RED,
BLUE,
PURPLE,
BLACK;
}
public class ColorEnumTest {
public static void main(String[] args) {
Color color = Color.BLUE;
switch (color) {
case RED:
System.out.println("红色");
break;
case BLUE:
System.out.println("蓝色");
break;
case PURPLE:
System.out.println("紫色");
break;
case BLACK:
System.out.println("黑色");
break;
case YELLOW:
System.out.println("黄色");
break;
default:
System.out.println("蓝色");
break;
}
}
}
测试结果:
image.png
每个枚举类型颜色是该Color类的一个实例对象,该构成方式和单例模式有些类似,故可以用只有一个枚举类型的枚举作为单例模式,而且枚举的构造器由编译器管理安全性十分高,既可以防止反射破解也可以防止反序列破解。
方法
EnumSet.noneOf()方法创建一个空的set ' EnumSet<Color> enumSet = EnumSet.noneOf(Color.class);'
EnumSet.allOf()方法创建一个满的set EnumSet<Color> enumSet = EnumSet.allOf(Color.class);
EnumSet.range() 'EnumSet<Color> enumSet = EnumSet.range(Color.YELLOW,Color.BLUE);
EnumSet.complementOf补集创建set
EnumSet<Color> enumSet = EnumSet.range(Color.YELLOW,Color.BLUE);
System.out.println(enumSet);
EnumSet<Color> enumSet1 = EnumSet.complementOf(enumSet);
EnumMap
public class EnumMapTest {
public static void main(String[] args) {
EnumMap<Color,String> enumMap = new EnumMap(Color.class);
enumMap.put(Color.BLACK,"黑色");
enumMap.put(Color.BLUE,"蓝色");
System.out.println(enumMap);
System.out.println(enumMap.get(Color.BLUE));
}
}
测试结果:
image.png
网友评论