Поиск записей enum в groovy или java

1

У меня есть следующий enum, созданный в groovy:

enum Status {
    FAILED(0, "Failed"), 
    SUCCESSFUL(1, "Successful")

    private final int key
    private final String val
    public Status(int key, String val) {
        this.val = val
        this.key = key
    }
    String toString() { return val }
}

Я хотел бы написать функцию для поиска записей моего класса enum, который возвращает true для Status.contains("Failed"). Можно ли сделать это?

  • 0
    Убедитесь, что ваш пример кода отформатирован для удобства чтения. Также укажите, что вы хотите сделать более четко. Избегайте использования слов на устном языке, таких как «хочу»: это предполагает небрежность и пренебрежение.
Теги:
groovy
search
enums

2 ответа

0
Лучший ответ

В Groovy вы можете сделать:

enum Status {
    FAILED(0, 'Failed'), 
    SUCCESSFUL(1, 'Successful')

    private final int key
    private final String val

    public Status(int key, String val) {
        this.val = val
        this.key = key
    }

    String toString() { val }

    static boolean containsVal(String val) {
        Status.values()*.val.contains val
    }
}

assert Status.containsVal('Failed')
0

Вы можете сами писать необходимые методы

Вот пример в java:

enum Status {
    FAILED(0, "Failed"),
    SUCCESSFUL(1, "Successful");

    private final int key;
    private final String val;

    Status(int key, String val) {
        this.val = val;
        this.key = key;
    }

    public static Status containsName(String name) {
        for (Status status : Status.values()) {
            if (status.name().equalsIgnoreCase(name)) {
                return status;
            }
        }
        return null;
    }

    public static Status containsVal(String val) {
        for (Status status : Status.values()) {
            if (status.val.equalsIgnoreCase(val)) {
                return status;
            }
        }
        return null;
    }

    public String toString() { return val; }
}

Метод containsName возвращает экземпляр Status, если его имя равно аргументу. Метод containsValue возвращает экземпляр Status, если его значение равно аргументу.

Status failed = Status.containsName("FAILED");
Status successful = Status.containsVal("Successful");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню