通过利用泛型,在加上反射中的getEnumConstants()方法,我们可以随机在任何一个enum类中去产生一个enum实例
1.创建随机选取的工具类
public class Enums {private static Random ran=new Random();//通过另一个方法对返回的数组进行处理public static <T extends Enum<T>> T random(Class<T> cla){return random(cla.getEnumConstants());//getEnumConstants()拿到enum类中的所有enum实例}//处理返回的数组public static <T> T random(T[] values){return values[ran.nextInt(values.length)];}//直接在方法内部进行数组的处理public static <T extends Enum<T>> T randoms(Class<T> s){T[] constants = s.getEnumConstants();T t=constants[ran.nextInt(constants.length)];return t;}}
以上有两种形式的书写方式,这两种方式都可以放回一个随机的enum实例。
2.测试
enum Actiry{SITTING,LYING,SHID,SADHO,SASJHOIDSA,SDJIAO,SAJD;}class RandomTest{public static void main(String[] args) {Class<Actiry> aClass = Actiry.class;System.out.println("第一种方法返回的实例 "+Enums.random(aClass));System.out.println("第二种方法返回的实例 "+Enums.randoms(aClass));}}
