`

java 枚举中的枚举

 
阅读更多
package enums;

import java.util.Random;

//获取枚举中随机属性
public class Enums {
	
	public static <T extends Enum<T>> T random(Class<T> ec){
		return random(ec.getEnumConstants());
	}
	public static <T>  T random(T[] values){
		//每次调用new一个新random,标识要不一样,要不然每次运行的结果都一样。
		return values[new Random(System.nanoTime()).nextInt(values.length)];
	}
}

 

package enums;

/**
 */
public enum TestEnum {
	STORK(Security.Stock.class),
	BOND(Security.Bond.class);
	
	interface Security{
		enum Stock implements Security{SHORT,LONG}
		enum Bond implements Security{JUNK,CCTV}
	}
	
	Security[] values;
	
	TestEnum(Class<? extends Security> kind){
		values = kind.getEnumConstants();
	}
	
	public Security randomSelection(){
		return Enums.random(values);
	}
	public static void main(String[] args){
		for (int i = 0; i < 5; i++) {
			TestEnum testEnum = Enums.random(TestEnum.class);
			System.out.println(testEnum+":"+testEnum.randomSelection());
		}
	}
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics