Re: Random Enum
 
markspace wrote:
Lew wrote:
public class RandomEnum // untested, not even compiled yet
{
  private static final Random rand = new Random();
  public static <E extends Enum<E>> E random( Class <E> clazz )
  {
    E [] values = clazz.getEnumConstants();
    return values [rand.nextInt( values.length )];
  }
}
This is what I would have suggested.  It's pretty simple really.  You 
could define a similar method that takes an enum rather than a class and 
returns a random value, it's just as easy to call getDeclaringClass() on 
an enum and use this one method.
package randomenum;
import java.lang.annotation.ElementType;
import java.util.Random;
import java.util.concurrent.TimeUnit;
public class RandomEnum
{
    public static void main( String[] args )
    {
        System.out.println( "Random TimeUnit: " +
                randomEnum( TimeUnit.SECONDS ) );
        System.out.println( "Random ElementType: " +
                randomEnum( ElementType.FIELD ) );
    }
    static Enum<?> randomEnum( Enum<?> e )
// or you could overload random( Enum<?> e )
    {
        return random( e.getDeclaringClass() );
    }
And couldn't you make this generic, too?  (I haven't tried it yet.)
   public static <E extends Enum<E>> E random( Enum <E> e )
   {
     return random( e.getDeclaringClass() );
   }
    private static final Random rand = new Random();
    public static <E extends Enum <E>> E random( Class <E> clazz )
    {
        E [] values = clazz.getEnumConstants();
        return values [rand.nextInt( values.length )];
    }
}
OUTPUT:
run:
Random TimeUnit: MICROSECONDS
Random ElementType: LOCAL_VARIABLE
BUILD SUCCESSFUL (total time: 2 seconds)
-- 
Lew