Enum zwracający wartość

0

Cześć,

Mam pytanie dotyczące poprawności takiego rozwiązania. Chciałbym żeby mój enum zwracał jakieś wartości typu String które później mogę użyć na widoku.

Obecnie robię to w taki sposób:

public enum MyEnum {

    ONE("First sample text"),
    TWO("Second sample text"),

    private String value;

    MyEnum(final String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    @Override
    public String toString() {
        return this.getValue();
    }
}

Jakieś sugestie co do zmiany tego rozwiązania lub do zastosowania czegoś innego co pozwoli mi uzyskać podobny efekt?

0

Wygląda ok

0

Trochę rozszerzając problem i bawiąc się w overengineering:

import java.util.function.Supplier;

// T - jakiś typ, do ustalenia, enumy nie przyjmują generyków
public enum Fun implements Supplier<T> {
    ONE(/* someT */),
    TWO(/* someT2 */)
    ;

    private T value;
    Fun(T t) {
        this.value = t;
    }

    @Override
    public T get() {
        return value;
    }
}

I później przekazywać dalej jako Suppliera - może się przydać gdy masz wiele różnych Enum'ów.

W przypadku String to jest trochę bez sensu bo każdy obiekt jest ma Object::toString, ale dla np. Double to może mieć sens.

0

Tak z ciekawosci po co final w konstruktorze w tym przypadku :D?

1 użytkowników online, w tym zalogowanych: 0, gości: 1