Как получить подмножество перечисления

В большинстве случаев перечисление, содержащее все элементы, показано в раскрывающемся списке в пользовательском интерфейсе. Нам нужно показать только 2 из 5 полей в пользовательском интерфейсе. Какой бы простой способ получить эти данные, используя некоторые функции, доступные для перечисления.

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

У нас есть требование показывать только {RED, BLUE} в определенном пользовательском интерфейсе?

Ответы

Ответ 1

Звучит как работа для EnumSet:

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

Ответ 3

Если перечисление содержит некоторые пользовательские методы (например, для отображения Red instesd 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<Color> getSubSetOfValues() {
        return EnumSet.of(RED, BLUE); // return Red and Green
        //return EnumSet.range(GREEN, BLUE); // return Green, Black and Blue
    }
}

Color.values ​​();//все элементы.

Color.getSubSetOfValues ​​();//подмножество