2012-02-18 86 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