venerdì 3 giugno 2011

Selezionare un elemento a caso da un enum

L'utilizzo degli enum in Java è molto comodo, specie se confrontato con lo stesso costrutto in altri linguaggi di programmazione (ad esempio il C, dove l'enum è un semplice int un po' abbellito).
Tuttavia, alcune operazioni possono non essere così immediate. Una di queste è la scelta di un valore a caso da un enum. Ad esempio:
 public enum Semi {
cuori, quadri, fiori, picche
}
Supponiamo di voler selezionare un valore a caso dai semi delle carte. Dato che non esiste un costrutto che permetta di farlo semplicemente, ho scritto una piccola classe di utilità per implementare la funzione sopra detta.
public class RandomEnum<E extends Enum<?>> {

private static final Random RANDOM = new Random();
private final E[] values;

public RandomEnum(Class<E> e) {
values = e.getEnumConstants();
}

public E random() {
return values[RANDOM.nextInt(values.length)];
}
}
L'implementazione è abbastanza banale. L'utilizzo altrettanto:
RandomEnum<Semi> r = new RandomEnum<Semi>(Semi.class);
System.out.println(r.random());

Nessun commento:

Posta un commento

BlogItalia.it - La directory italiana dei blog