Случайное значение из любого перечисления - PullRequest
3 голосов
/ 18 февраля 2012

У меня есть java-перечисления повсюду, и хотя я видел множество хороших способов случайного выбора, я чувствую, что должен быть способ сделать это в общем;то есть один метод выбора случайного значения из любого предоставленного перечисления.Скажем,

public static <E> E randomMember(Enum<E> enumeration){
...
}

Пока я не могу найти способ сделать это, и отсутствие результатов Google заставляет меня поверить, что это невозможно (или, наверное, это не популярный запрос)).

Есть мысли?

1 Ответ

4 голосов
/ 18 февраля 2012

Вы должны передать enum класс , а не enum * экземпляр , чтобы заставить это работать:

public static <T extends Enum<T>> T randomMember(Class<T> enumType) {
    T[] constants = enumType.getEnumConstants();
    // Return a random element of constants array
}

...

MyEnum rand = randomMember(MyEnum.class);
...