如何获取枚举的子集

大多数情况下,包含所有元素的枚举显示在用户界面的下拉列表中。 我们需要在用户界面中仅显示5个字段中的2个。 通过某种方式利用可用于枚举的相同函数,获取此数据的更简单方法是什么。

enum Color {RED, GREEN, BLACK, BLUE, YELLOW}; 

我们要求在某个用户界面中只显示{RED,BLUE}?

听起来像EnumSet的工作:

 EnumSet set = EnumSet.of(Color.RED, Color.BLUE); 
 EnumSet.of(Color.RED, Color.BLUE) 

请参阅java.util.EnumSet

如果枚举包含一些自定义方法(例如,显示Red instesd of RED

 public enum Color { RED("Red"), GREEN("Green"), BLACK("Black"), BLUE("Blue"), YELLOW("Yellow"); private final String display; private Color(String display) { this.display = display; } @Override public String toString() { return display; } public static EnumSet getSubSetOfValues() { return EnumSet.of(RED, BLUE); // return Red and Green //return EnumSet.range(GREEN, BLUE); // return Green, Black and Blue } } 

Color.values(); //所有元素

Color.getSubSetOfValues(); //子集