2012-02-18 83 views
3

我已经在所有地方都有java枚举了,虽然我已经看到了随机选择一个的各种好方法,但感觉应该有一种方法来一般地做到这一点;也就是从任何提供的枚举中选择一个随机值的一种方法。再说了,来自任何枚举的随机值

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

但我不能想出一个办法做到这一点,而且缺乏谷歌的结果使我相信这是不可能的(或者是不是一个受欢迎的要求,我猜)。

有什么想法?

回答

4

你应该通过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); 
+0

太棒了!我现在检查一下并报告回来,但看起来我再次被泛型所绊住了。非常感谢。 – mtrc 2012-02-19 14:47:31