在这篇文章中,我们将讨论java.util包中的EnumSet类。
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
这个类是Java Collections Framework的成员。
让我们来看看Effective Java书中的一个例子。在这个例子中,我们使用了基本颜色RED、GREEN和BLUE,通过使用EnumSet来创建一个自定义的颜色。正如我所说,EnumSet非常适用于组合效果,无论是文本样式,如Effective Java中描述的BOLD和UNDERLINE,还是组合基本颜色来创建自定义颜色。如果你有MS paint,你甚至可以测试颜色的组合,例如,你可以结合RED和BLUE来创建YELLOW,结合所有三个来创建WHITE,或者结合RED和BLUE来创建PINK。
import java.util.EnumSet;
import java.util.Set;
public class EnumSetExample {
public static void main(final String[] args) {
// this will draw line in yellow color
final EnumSet<Color> yellow = EnumSet.of(Color.RED, Color.GREEN);
drawLine(yellow);
// RED + GREEN + BLUE = WHITE
final EnumSet<Color> white = EnumSet.of(Color.RED, Color.GREEN, Color.BLUE);
drawLine(white);
// RED + BLUE = PINK
final EnumSet<Color> pink = EnumSet.of(Color.RED, Color.BLUE);
drawLine(pink);
}
public static void drawLine(final Set<Color> colors) {
System.out.println("Requested Colors to draw lines : " + colors);
for (final Color c : colors) {
System.out.println("drawing line in color : " + c);
}
}
private enum Color {
RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);
private int r;
private int g;
private int b;
private Color(final int r, final int g, final int b) {
this.r = r;
this.g = g;
this.b = b;
}
public int getR() {
return r;
}
public int getG() {
return g;
}
public int getB() {
return b;
}
}
}
输出:
Requested Colors to draw lines : [RED, GREEN]
drawing line in color : RED
drawing line in color : GREEN
Requested Colors to draw lines : [RED, GREEN, BLUE]
drawing line in color : RED
drawing line in color : GREEN
drawing line in color : BLUE
Requested Colors to draw lines : [RED, BLUE]
drawing line in color : RED
drawing line in color : BLUE
###参考文献
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2018/08/enumset-in-java.html
内容来源于网络,如有侵权,请联系作者删除!