通过利用泛型,在加上反射中的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));
}
}