package qian.com;
//1.如何将枚举元素分类组织
//2.可以通过在一个接口的内部,创建实现该接口的枚举,依次将元素进行分组
interface StudentRank{
enum PrimaryRank implements StudentRank{
GRADE_ONE,GRADE_TWO,GRADE_THREE,GRADE_FOUR,GRADE_FIVE,GRADE_SIX;
}
enum JuniorRank implements StudentRank{
JUNIOR_ONE,JUNIOR_TWO,JUNIOR_THREE;
}
enum SeniorRank implements StudentRank{
SENIOR_ONE,SENIOR_TWO,SENIOR_THREE;
}
}
enum Rank{
PRIMARY(StudentRank.PrimaryRank.class),
JUNIOR(StudentRank.JuniorRank.class),
Senior(StudentRank.SeniorRank.class);
private StudentRank[] sr;
private Rank(Class<? extends StudentRank> stu){
sr = stu.getEnumConstants();
}
public StudentRank selectRand(){
return RandEnumTools.random(sr);
}
}
//可以将代码组织如下,这样看的有更加清晰:
enum Rank2{
PRIMARY(StudentRank.PrimaryRank.class),
JUNIOR(StudentRank.JuniorRank.class),
Senior(StudentRank.SeniorRank.class);
private StudentRank[] sr;
private Rank2(Class<? extends StudentRank> stu){
sr = stu.getEnumConstants();
}
public StudentRank selectRand(){
return RandEnumTools.random(sr);
}
interface StudentRank{
enum PrimaryRank implements StudentRank{
GRADE_ONE,GRADE_TWO,GRADE_THREE,GRADE_FOUR,GRADE_FIVE,GRADE_SIX;
}
enum JuniorRank implements StudentRank{
JUNIOR_ONE,JUNIOR_TWO,JUNIOR_THREE;
}
enum SeniorRank implements StudentRank{
SENIOR_ONE,SENIOR_TWO,SENIOR_THREE;
}
}
}
public class EnumManage {
public static void main(String[] args) {
for(int i=0;i<10;i++){
for(Rank rank:Rank.values()){
StudentRank srank = rank.selectRand();
System.out.print(srank+"; ");
}
}
System.out.println();
for(int i=0;i<10;i++){
for(Rank2 rank:Rank2.values()){
qian.com.Rank2.StudentRank srank = rank.selectRand();
System.out.print(srank+"; ");
}
}
}
}
运行结果: