读书人

Enum兑现自由选择

发布时间: 2012-12-20 09:53:21 作者: rapoo

Enum实现自由选择

?

?

public interface Food {enum Appetizer implements Food {SALAD, SOUP, SPRING_ROLLS;}enum mainCourse implements Food {LASAGNE, BURRITO, PAD_THAT, LENTILS, HUMMOUS, VINDALOO;}enum Dessert implements Food {TIRAMISU, GELATO, BLACK_FOREST_CAKE, FRUIT, CREAM_CARAMEL;}enum Coffee implements Food {BLACK_COFFEE, DECAF_COFFEE;}}public enum Course {APP(Food.Appetizer.class), MAIN(Food.mainCourse.class), DES(Food.Dessert.class), COFF(Food.Coffee.class);private Food[] values;private Random rand = new Random();private Course(Class<? extends Food> kind) {values = kind.getEnumConstants();}public Food randomSelection() {return values[rand.nextInt(values.length)];}}public class Meal {public static void main(String []args){for(int i=0;i<5;i++){for(Course course:Course.values()){Food food =course.randomSelection();System.out.println(food);}System.out.println("^^^^^^^^^^^^^^");}}}
运行结果如下:
SPRING_ROLLSPAD_THATBLACK_FOREST_CAKEDECAF_COFFEE^^^^^^^^^^^^^^SPRING_ROLLSBURRITOBLACK_FOREST_CAKEDECAF_COFFEE^^^^^^^^^^^^^^SPRING_ROLLSBURRITOCREAM_CARAMELDECAF_COFFEE^^^^^^^^^^^^^^SALADLASAGNEBLACK_FOREST_CAKEBLACK_COFFEE^^^^^^^^^^^^^^SALADBURRITOBLACK_FOREST_CAKEDECAF_COFFEE^^^^^^^^^^^^^^
对于enum而言,实现接口是其子类化的唯一办法,如果Food中的每个enum都实现了接口,通过向上转型便可以得到所有的东西。当需要与一大堆类型打交道时,创建枚举的枚举,就可以创建一个新的enum然后实例food的每一个类。

读书人网 >编程

热点推荐