通过利用泛型,在加上反射中的getEnumConstants()方法,我们可以随机在任何一个enum类中去产生一个enum实例

    1.创建随机选取的工具类

    1. public class Enums {
    2. private static Random ran=new Random();
    3. //通过另一个方法对返回的数组进行处理
    4. public static <T extends Enum<T>> T random(Class<T> cla){
    5. return random(cla.getEnumConstants());//getEnumConstants()拿到enum类中的所有enum实例
    6. }
    7. //处理返回的数组
    8. public static <T> T random(T[] values){
    9. return values[ran.nextInt(values.length)];
    10. }
    11. //直接在方法内部进行数组的处理
    12. public static <T extends Enum<T>> T randoms(Class<T> s){
    13. T[] constants = s.getEnumConstants();
    14. T t=constants[ran.nextInt(constants.length)];
    15. return t;
    16. }
    17. }

    以上有两种形式的书写方式,这两种方式都可以放回一个随机的enum实例。
    2.测试

    1. enum Actiry{
    2. SITTING,LYING,SHID,SADHO,SASJHOIDSA,SDJIAO,SAJD;
    3. }
    4. class RandomTest{
    5. public static void main(String[] args) {
    6. Class<Actiry> aClass = Actiry.class;
    7. System.out.println("第一种方法返回的实例 "+Enums.random(aClass));
    8. System.out.println("第二种方法返回的实例 "+Enums.randoms(aClass));
    9. }
    10. }