Я обновил ядро jQuery до 1.9.1 и решил разницу интервалов в неактивных вкладках. Сначала я попробую, а затем просмотрю другие варианты переопределения кода.
Единственное, что я бы предложил - это кэширование результата значений()
, потому что каждый вызов копирует массив. Также не создавайте Случайность
каждый раз. Сохраните один. Кроме этого, то, что вы делаете, это нормально. Итак:
public enum Letter {
A,
B,
C,
//...
private static final List<Letter> VALUES =
Collections.unmodifiableList(Arrays.asList(values()));
private static final int SIZE = VALUES.size();
private static final Random RANDOM = new Random();
public static Letter randomLetter() {
return VALUES.get(RANDOM.nextInt(SIZE));
}
}
Сочетание предложений cletus и helios,
import java.util.Random;
public class EnumTest {
private enum Season { WINTER, SPRING, SUMMER, FALL }
private static final RandomEnum<Season> r =
new RandomEnum<Season>(Season.class);
public static void main(String[] args) {
System.out.println(r.random());
}
private static class RandomEnum<E extends Enum<E>> {
private static final Random RND = new Random();
private final E[] values;
public RandomEnum(Class<E> token) {
values = token.getEnumConstants();
}
public E random() {
return values[RND.nextInt(values.length)];
}
}
}
Редактирование: Ой, я забыл параметр ограниченного типа,
.
Если вы делаете это для тестирования, вы можете использовать Quickcheck ( это Java-порт, над которым я работал).
import static net.java.quickcheck.generator.PrimitiveGeneratorSamples.*;
TimeUnit anyEnumValue = anyEnumValue(TimeUnit.class); //one value
Он поддерживает все примитивные типы, состав типов, коллекции, различные функции распределения, границы и т.д. Он имеет поддержку бегунов, выполняющих несколько значений:
import static net.java.quickcheck.generator.PrimitiveGeneratorsIterables.*;
for(TimeUnit timeUnit : someEnumValues(TimeUnit.class)){
//..test multiple values
}
Преимущество Quickcheck заключается в том, что вы можете определить тесты, основанные на спецификации, где обычный TDD работает со сценариями.
.